我有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分钟。我的错误是什么?
答案 0 :(得分:4)
试试这个:
$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 ";
答案 1 :(得分:0)
您将除以3600以将其从秒转换为小时,然后使用number_format
将结果呈现为两位小数。
表达的结果是:
5.23
这确实是大约5小时14分钟。 (请记住,一小时有60分钟。)
不是这样做,而是应该以秒为单位保留值,然后使用function to convert it to a human readable format。一种可能性是date_diff
;链接的SO问题还有很多其他问题。
答案 2 :(得分:0)
由于一小时包括60小时,而不是100分钟,5.23小时包括5小时13.8分钟。 0.2小时不匹配是由于将实际值四舍五入到小数点后两位得到0.23。
0.23 * 60 = 13.8