public function actionDemo3(){
//功能:计算两个时间戳之间相差的日时分秒
//$begin 开始时间戳
//$end 结束时间戳
//先计算相差的年份数,再用开始时间加上年份数得到第二开始时间,
//再用第二开始时间与结束时间计算时间差
$begin = "2012-07-15 00:00:00" ;
$end = date("Y-m-d H:i:s") ;
$aa = $this->diffDate($begin,$end) ;
$year = intval($aa['y']) ;//相差年份
if($year>0){
$begin2 = date("Y-m-d H:i:s",strtotime("+{$year} year",strtotime($begin))) ;
}else{
$begin2 = $begin ;
}
var_dump($begin2);
var_dump("------------") ;
$begin_time = strtotime($begin2) ;
$end_time = strtotime($end) ;
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);
var_dump($res);exit;
}
public function diffDate($date1,$date2)
{
$datetime1 = new \DateTime($date1);
$datetime2 = new \DateTime($date2);
$interval = $datetime1->diff($datetime2);
$time['y'] = $interval->format('%Y');
$time['m'] = $interval->format('%m');
$time['d'] = $interval->format('%d');
$time['h'] = $interval->format('%H');
$time['i'] = $interval->format('%i');
$time['s'] = $interval->format('%s');
$time['a'] = $interval->format('%a'); // 两个时间相差总天数
return $time;
}
参考:https://segmentfault.com/a/1190000006795735