js 和 php 用的比较多的时间操作

本文用作笔记记录,方便自己查找

时间戳可以加秒数来增加时间 如加一天为 时间戳+60*60*24

js:

//增加天数 
Date.prototype.addDays = function (d) {  
    this.setDate(this.getDate() + d);  
};  
//增加星期数
Date.prototype.addWeeks = function (w) {  
    this.addDays(w * 7);  
};  
//增加月份
Date.prototype.addMonths = function (m) {  
    var d = this.getDate();  
    this.setMonth(this.getMonth() + m);  
    if (this.getDate() < d)  
        this.setDate(0);  
};  
//增加年份
Date.prototype.addYears = function (y) {  
    var m = this.getMonth();  
    this.setFullYear(this.getFullYear() + y);  
    if (m < this.getMonth()) {  
        this.setDate(0);  
    }  
};  

//获取时间季度
Date.prototype.getQuarter = function(){
    return Math.floor( this.getMonth() / 3 + 1);
}

//计算两日期间所有季度
function year_quarter(begin,end) {
    var year_quarter = new Array();

    var begindate = new Date( begin.replace(/-/g,'/'));
    var enddate = new Date(end.replace(/-/g,'/'));
    
    var beginyear = begindate.getFullYear();
    var endyear = enddate.getFullYear();
    var tempdate = begindate;
    for( var i = beginyear;i<=endyear;i++){
        var j = 1;
        if(i == beginyear){
            j = begindate.getQuarter();
        }

        for (j;j<=4;j++){

            if( -1== year_quarter.indexOf(tempdate.getFullYear() +'-'+tempdate.getQuarter())){
                year_quarter.push(tempdate.getFullYear() +'-'+tempdate.getQuarter());
            }

            if(j == enddate.getQuarter()
                && i == enddate.getFullYear()){
                break;
            }
            tempdate.addMonths(3); //下一个季度
        }
    }
    return year_quarter;
}

//时间间隔 数
Date.prototype.diffOf = function(lateDate){
    var lateTime = lateDate;
    if(!lateDate instanceof Date){
        lateTime = new Date(Date.parse(lateDate.replace(/-/g,   "/"))).getTime();
    }
    var dates =  (lateTime - this) /(1000*60*60*24);
    return  dates;
}
 
//日期格式化
Date.prototype.format = function(format) {
    var date = {
           "M+": this.getMonth() + 1,
           "d+": this.getDate(),
           "h+": this.getHours(),
           "m+": this.getMinutes(),
           "s+": this.getSeconds(),
           "q+": Math.floor((this.getMonth() + 3) / 3),
           "S+": this.getMilliseconds()
    };
    if (/(y+)/i.test(format)) {
           format = format.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length));
    }
    for (var k in date) {
           if (new RegExp("(" + k + ")").test(format)) {
                  format = format.replace(RegExp.$1, RegExp.$1.length == 1
                         ? date[k] : ("00" + date[k]).substr(("" + date[k]).length));
           }
    }
    return format;
} 

php:

//返回格式化(Y-m-d H:i:s)的时间
if(!function_exists('GetDateTime'))
{
	function GetDateTime($mktime)
	{
		return empty($mktime)?"":MyDate('Y-m-d H:i:s',$mktime);
	}
}


//返回格式化(Y-m-d)的日期
if(!function_exists('GetDateMk'))
{
	function GetDateMk($mktime)
	{
		return MyDate('Y-m-d', $mktime);
	}
}

//计算两个时间差并返回差多少天、时、分、秒
if(!function_exists('timediff')){
	function timediff($begin_time,$end_time){
		  if($begin_time < $end_time){
			 $starttime = $begin_time;
			 $endtime = $end_time;
		  }else{
			 $starttime = $end_time;
			 $endtime = $begin_time;
		  }
		  $timediff = $endtime-$starttime;
		  $days = intval($timediff/86400);
		  $remain = $timediff%86400;
		  $hours = intval($remain/3600);
		  $remain = $remain%3600;
		  $mins = intval($remain/60);
		  $secs = $remain%60;
		  $res = array("day" => $days,"hour" => $hours,"min" => $mins,"sec" => $secs);
		  return $res;
	}
}


//从普通时间转换为Linux时间截
if(!function_exists('GetMkTime'))
{
	function GetMkTime($dtime)
	{
		if(!preg_match("/[^0-9]/", $dtime))
		{
			return $dtime;
		}
		$dtime = trim($dtime);
		$dt = array(1970, 1, 1, 0, 0, 0);
		$dtime = preg_replace("/[\r\n\t]|日|秒/", " ", $dtime);
		$dtime = str_replace("年", "-", $dtime);
		$dtime = str_replace("月", "-", $dtime);
		$dtime = str_replace("时", ":", $dtime);
		$dtime = str_replace("分", ":", $dtime);
		$dtime = trim(preg_replace("/[ ]{1,}/", " ", $dtime));
		$ds = explode(" ", $dtime);
		$ymd = explode("-", $ds[0]);
		if(!isset($ymd[1])) $ymd = explode(".", $ds[0]);
		if(isset($ymd[0])) $dt[0] = $ymd[0];
		if(isset($ymd[1])) $dt[1] = $ymd[1];
		if(isset($ymd[2])) $dt[2] = $ymd[2];
		if(strlen($dt[0])==2) $dt[0] = '20'.$dt[0];
		if(isset($ds[1]))
		{
			$hms = explode(":", $ds[1]);
			if(isset($hms[0])) $dt[3] = $hms[0];
			if(isset($hms[1])) $dt[4] = $hms[1];
			if(isset($hms[2])) $dt[5] = $hms[2];
		}
		foreach($dt as $k=>$v)
		{
			$v = preg_replace("/^0{1,}/", '', trim($v));
			if($v == '')
			{
				$dt[$k] = 0;
			}
		}

		$mt = mktime($dt[3], $dt[4], $dt[5], $dt[1], $dt[2], $dt[0]);
		if(!empty($mt)) return $mt;
		else return time();
	}
}

//字符串日期、时间戳,格式化
function dateformat($datestr,$format="Y-m-d"){


    if( preg_match("/\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}/",$datestr)
        or  preg_match("/\\d{4}-\\d{2}-\\d{2}/",$datestr) ){

        if($datestr=="" || $datestr == "0000-00-00 00:00:00" ){
            return "";
        }else{
            return date_format( date_create($datestr),$format);
        }
    }else if(is_numeric($datestr)){

        return  date($format,$datestr);
    }else{
        return "";
    }

}

发表评论

您的电子邮箱地址不会被公开。