日期:2014-05-17  浏览次数:20441 次

PHP 日期操作 小结

最近项目中应用PHP日期处理较多,顺便记录一下。

?

<?php 

//PHP获得当前日期的前一天和后一天
echo date('Y-m-d',time()-86400);
echo date('Y-m-d',time()+86400);
//2011-07-09 2011-07-11

//-------------------------------------- 分割线 ------------------------------------

//PHP获得明天、上个月、明年
$tomorrow  = date("Y-m-d", mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"))); 
$lastmonth = date("Y-m-d", mktime(0, 0, 0, date("m")-1, date("d"),   date("Y")));
$nextyear  = date("Y-m-d", mktime(0, 0, 0, date("m"),   date("d"),   date("Y")+1));

echo $tomorrow.' '.$lastmonth.' '.$nextyear;
//2011-07-11 2011-06-10 2012-07-10

//-------------------------------------- 分割线 ------------------------------------

//PHP获得指定日期所在星期的第一天和最后一天
function getWeekDay($date){
    $lastday = date("Y-m-d",strtotime("$date Sunday"));
    $firstday = date("Y-m-d",strtotime("$lastday -6 days"));
    return array($firstday,$lastday);
}

print_r(getWeekDay("2011-07-10"));
/**
 * Array
 * 	(
 *   	[0] => 2011-07-04
 *  	[1] => 2011-07-10
 *	)
 */

//-------------------------------------- 分割线 -------------------------------

//PHP获得指定日期所在月的第一天和最后一天
function getMonthDay($date){
    $firstday = date("Y-m-01",strtotime($date));
    $lastday = date("Y-m-d",strtotime("$firstday +1 month -1 day"));
    return array($firstday,$lastday);
}

print_r(getMonthDay("2011-07-10"));
/**
 * Array
 * 	(
 *   	[0] => 2011-07-01
 *  	[1] => 2011-07-31
 *	)
 */
//PHP获得两日期间隔天数[PHP版本>= 5.3 有效]
function getIntervalDay($date1 = null, $date2 = null){
	$datetime1 = new DateTime($date1);
	$datetime2 = new DateTime($date2);
	$interval = $datetime1->diff($datetime2);
	return $interval->format('%a');
}

function getIntervalDay1($date1 = null, $date2 = null){
	$datetime1 = date_create($date1);
	$datetime2 = date_create($date2);
	$interval = date_diff($datetime1, $datetime2);
	return $interval->format('%a');
}

echo getIntervalDay('2011-07-25', '2011-07-26');//1
echo getIntervalDay1('2011-07-25', '2011-08-28');//34
?>
? ?

?