4

时间令人困惑......如何在php中计算从PM到AM所经过的时间?

例如22:00:00 (10pm)to02:00:00 (02am)应该给04 hourselapsed。相反,我的代码返回-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 小时限制的情况下获得时间......当它通过午夜标记时?

4

3 回答 3

8

-8小时就是4小时。12如果数字是负数,只需添加:

$time_diff = $timestop - $timestart; //time difference

if ($time_diff < 0) {
  $time_diff += 12;
}

但是,如果您的约会相隔一天以上,这对您没有帮助。您还需要指定日期(如月份中的某天)以告诉 PHP 这些时间是不同的。

于 2012-06-14T23:48:26.547 回答
1

显然 22:00:00 是 24 小时制,但 02:00:00 可能不是吗?

也添加日期,或测试负数并添加 12 小时。

于 2012-06-14T23:54:53.097 回答
1

我的快速解决方案:将一天添加到以后的日期。

echo gmdate('h', strtotime('1970-00-01 02:00:00') - strtotime('1970-00-00 22:00:00'));

但 Blender 的回答似乎更容易。:)

于 2012-06-14T23:55:36.877 回答