<?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
本文介绍了一个PHP函数,用于精确计算两个指定日期时间之间的年、月、日、小时、分钟和秒的差异,并通过正则表达式验证了输入格式。

被折叠的 条评论
为什么被折叠?



