时间令人困惑......如何计算php中从PM到AM的时间?
例如,22:00:00 (10pm)
到02:00:00 (02am)
应该04 hours
已过去。而是我的代码返回-08 hours
function hours_elapsed()
{
$timestart = strtotime("22:00:00");
$timestop = strtotime("02:00:00");
$time_diff = $timestop - $timestart; //time difference
return gmdate("h", $total_hours);
}
很明显,代码以24小时格式计算,所以它当然会返回-08
但是如何在没有24小时约束的情况下获得时间...当它通过午夜标记时? / p>
答案 0 :(得分:8)
-8
小时为4
小时。如果数字为负数,只需添加12
:
$time_diff = $timestop - $timestart; //time difference
if ($time_diff < 0) {
$time_diff += 12;
}
但是,如果你的约会时间超过一天,这对你没有帮助。您还需要指定日期(如当月的日期),以告诉PHP这些时间是不同的。
答案 1 :(得分:1)
显然22:00:00是24小时制,02:00:00可能是不是吗?
添加日期,或测试否定并添加12小时。
答案 2 :(得分:1)
我的快速解决方案:在以后的日期添加一天。
echo gmdate('h', strtotime('1970-00-01 02:00:00') - strtotime('1970-00-00 22:00:00'));
但是Blender的答案似乎更容易。 :)