最近项目中应用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
?>