Php计算从PM到AM的经过的小时数

时间:2012-06-14 23:46:06

标签: php datetime time

时间令人困惑......如何计算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>

3 个答案:

答案 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的答案似乎更容易。 :)