/**
* 获取两个日期(时间戳)之间的差值 例:get_date_diff('2012-01-01 01:01:01', '2013-02-02 02:02:02') 或者 get_date_diff('1325350861', '1359741722')
* @param string|int $var1 日期一(时间戳一) 例:2012-01-01 01:01:01 或者 1325350861
* @param string|int $var2 日期二(时间戳二) 例:2013-02-02 02:02:02 或者 1359741722
* @return array
*/
function get_date_diff($var1, $var2): array
{
$type1 = gettype($var1);
$type2 = gettype($var2);
if ($type1 != 'string' && $type1 != 'integer' && $type1 != $type2)
die('参数类型错误');
// 检测变量是否为数字或数字字符串
if (is_numeric($var1)) {
$var1 = date('Y-m-d H:i:s', intval($var1));
$var2 = date('Y-m-d H:i:s', intval($var2));
}
// 创建DateTime 对象
$date1 = date_create($var1);
$date2 = date_create($var2);
if (!$date1 || !$date2)
die('日期格式不正确');
// 获取两个日期之间的差值
$diff = date_diff($date1, $date2);
return [
'y' => $diff->y, // 年
'm' => $diff->m, // 月
'd' => $diff->d, // 天
'h' => $diff->h, // 时
'i' => $diff->i, // 分
's' => $diff->s, // 秒
'f' => $diff->f, // 微秒
'invert' => $diff->invert, // 0:$date1 <= $date2 1:$date1 > $date2
'days' => $diff->days, // 总共相差天数
];
}
v(get_date_diff('2012-01-01 01:01:01', '2013-02-02 02:02:02'));
v(get_date_diff('1325350861', '1359741722'));
v(get_date_diff(1325350861, 1359741722));
执行结果如下: