您的位置:首页 > 其它

计算格式为YYYY-MM-DD HH:ii:ss的两个时间,相差多少年、多少月、多少日、多少小时、多少分钟、多少秒?

2017-09-19 10:09 966 查看
<?php
function diffDateTime($datetime1,$datetime2){
$preg = "/^\d{4}\-\d{2}\-\d{2}(\s)+\d{2}:\d{2}:\d{2}$/";//验证时间格式是否为YYYY-MM-DD HH:ii:ss
if(!preg_match($preg, $datetime1) || !preg_match($preg, $datetime2)) exit('Format Error');
if(strtotime($datetime1) > strtotime($datetime2)){
$tmp = $datetime2;
$datetime2 = $datetime1;
$datetime1 = $tmp;
}
list($date1,$time1) = explode(' ',$datetime1);
list($date2,$time2) = explode(' ',$datetime2);
list($year1,$month1,$day1) = explode('-',$date1);
list($year2,$month2,$day2) = explode('-',$date2);
if(!checkdate($month1,$day1,$year1) || !checkdate($month2,$day2,$year2)) exit('Invalid Date');
$diff_year = $year2 - $year1;
$diff_month = $month2 - $month1;
$diff_day = $day2 - $day1;
if($diff_day < 0){
$diff_day += (int)date('t',strtotime("-1 month $date2"));
$diff_month--;
}
if($diff_month < 0){
$diff_month += 12;
$diff_year--;
}
//计算时间差
$timediff = abs(strtotime($time2) - strtotime($time1));
//计算小时数
$diff_hour = intval($timediff / 3600);
//计算分钟数
$remain = $timediff % 3600;
$diff_minute = intval($remain / 60);
//计算秒数
$diff_second = $remain % 60;
return array(
'diff_year' => $diff_year,
'diff_month' => $diff_month,
'diff_day' => $diff_day,
'diff_hour' => $diff_hour,
'diff_minute' => $diff_minute,
'diff_second' => $diff_second
);
}

var_dump(diffDateTime('2019-02-27 12:20:15','2017-02-02 12:19:55'));


输出:

array (size=6)

  'diff_year' => int 2

  'diff_month' => int 0

  'diff_day' => int 25

  'diff_hour' => int 0

  'diff_minute' => int 0

  'diff_second' => int 20
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: