1、求某个时间的年,月,日,本月天数 --- 如果求当前时间,将date的第二个参数改为time()即可
$some_time = '2013-2-27 21:35:48'; $str_time = strtotime($some_time);
(1)某月的天数:
方法一:$days = date('t',$str_time);
方法二:$days = cal_days_in_month(CAL_GREGORIAN,3,2013);
(2)年月日
$year = date('Y',$str_time);
$month = date('m',$str_time);
$day = date('d',$str_time);
$hour = date('H',$str_time);
$min = date('i',$str_time);
$second = date('s',$str_time);
月初: $star_month = date('Y-m-01 00:00:00',$str_time);
月末: $end_month = date('Y-m-t 23:59:59',$str_time);
2、计算临近时间 (月会不准确:比如31号时,上个月或者下个月没有31号,则自动跳转加减30天)
方法一:
+为后面的时间,-为前面的时间
1年后的时间:date('Y-m-d H:i:s',strtotime('+1 year'));
一个月后的时间:date('Y-m-d H:i:s',strtotime('+1 month'));
一天后的时间:date('Y-m-d H:i:s',strtotime('+1 day'));
一星期后的时间:date('Y-m-d H:i:s',strtotime('+1 week'));
一小时后的时间:date('Y-m-d H:i:s',strtotime('+1 hour'));
一分钟后的时间:date('Y-m-d H:i:s',strtotime('+1 minute'));
一秒钟后的时间:date('Y-m-d H:i:s',strtotime('+1 second'));
方法二:
一个月后的时间:date('Y-m-d H:i:s',mktime(date("H"),date("i"),date("s"),date("m")+1,date("d"),date("Y")));
1年零1个月后的时间:date('Y-m-d H:i:s',mktime(date("H"),date("i"),date("s"),date("m")+1,date("d"),date("Y")+1))
3、计算时间差
(1)两个日期相隔的天,时,分,秒
function timediff($begin_time,$end_time){
if($begin_time<$end_time){
$star_time = $begin_time;
else{
star_time = $end_time;
$end_time = $begin_time;
}
$timediff = $end_time - $star_time;
$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;
}
$timediff = timediff(strtotime('2015-12-28'),strtotime('2015-11-25'));