实现代码
<?php
function diffTime($datetime1, $datetime2)
{
// 确保 $datetime1 总是小于或等于 $datetime2
if (strtotime($datetime1) > strtotime($datetime2)) {
$tmp = $datetime2;
$datetime2 = $datetime1;
$datetime1 = $tmp;
}
// 转换为时间戳
$timestamp1 = strtotime($datetime1);
$timestamp2 = strtotime($datetime2);
// 计算时间差(秒)
$difference = $timestamp2 - $timestamp1;
// 计算小时、分钟和秒
$hours = floor($difference / 3600);
$minutes = floor(($difference % 3600) / 60);
$seconds = $difference % 60;
return array('hour' => $hours, 'minute' => $minutes, 'second' => $seconds);
}
// 示例用法
$datetime1 = '2023-10-01 12:30:15';
$datetime2 = '2023-10-02 15:45:40';
$result = diffTime($datetime1, $datetime2);
print_r($result);
?>
输出结果
27 小时 15 分钟 25 秒
代码解释
- 确保时间顺序:首先确保 $datetime1 总是小于或等于 $datetime2。
- 转换为时间戳:使用 strtotime 函数将日期时间字符串转换为时间戳。
- 计算时间差:计算两个时间戳之间的差值(以秒为单位)。
- 计算小时和分钟:
使用 floor 函数将总秒数除以 3600(每小时的秒数)得到小时数。
使用取模运算 % 和 floor 函数计算剩余的分钟数。
再次使用取模运算 % 计算剩余的秒数。 - 返回结果:返回包含小时和分钟差异的数组。