我有两个 24 小时格式的日期
$fulldate_hour_start = "2013-11-11 18:16:00 ";
$fulldate_hour_end = "2013-11-11 23:30:00 ";
我用这个减去它们
$Hours = number_format((((strtotime($fulldate_hour_end) - strtotime($fulldate_hour_start)) / 60) / 60),2);
结果是 5 小时 23 分钟。 应该是 5 小时 14 分钟。我的错误是什么?
试试这个:
$date1 = new DateTime("2013-11-11 18:16:00");
$date2 = new DateTime("2013-11-11 23:30:00");
$interval = $date1->diff($date2);
echo "difference " . $interval->h . " Hours, " . $interval->i." Mintues, ".$interval->s." seconds ";
您除以 3600 以从秒转换为小时,然后使用 number_format
以两个小数位呈现结果。
表达式的结果是:
5.23
这确实是大约 5 小时 14 分钟。(请记住,一小时有 60 分钟。
与其这样做,不如将值保留在几秒钟内,然后使用函数将其转换为人类可读的格式。一种可能性是date_diff
;链接的SO问题还有许多其他问题。
由于一小时由 60 分钟而不是 100 分钟组成,因此 5.23 小时是 5 小时 13.8 分钟。0.2 小时的不匹配是由于将实际值四舍五入到小数点后两位得到 0.23。
0.23 * 60 = 13.8