用PHP计算最接近00:00的小时数

时间:2014-10-23 11:36:56

标签: php datetime

无论PHP中的日期如何,我如何计算最近的午夜时间00:00。例如:

如果时间为22:00,则需要2小时才能到达00:00

如果时间为04:00,则-4小时最接近00:00

目前我有以下PHP功能:

<?php

$ts1 = strtotime('00:00');
$ts2 = strtotime('04:00');
$diff = ($ts1 - $ts2) / 3600;

?>

但是在上面的内容中,这并没有多大帮助。

3 个答案:

答案 0 :(得分:1)

答案取决于日期(不仅仅是时间)。这是因为夏令时变化。例如02:59可能会更接近00:00,然后是21:01,那时夏令时会缩短时间。

答案 1 :(得分:1)

如果您有可用的PHP Datetime类,则可以计算两个日期时间之间的difference

$time1 = new \DateTime('00:00');
$time2 = new \DateTime('04:00');

$diff = $time1->diff($time2, true);

$hourDifference = 0;
if ($diff->h < 12) {
    $hourDifference = -$diff->h;
} elseif ($diff->h > 12) {
    $hourDifference = 24 - $diff->h;
} else {
    $hourDifference = 12; // kann be positive or negative
}

您将获得一个DateInverall对象,您可以访问它,小时,小时,秒,并将它们与普通的php运算符进行比较。

答案 2 :(得分:1)

如果你对分钟感兴趣;

<强> 1。提取分钟。

  • 检查分钟是>还是<=30
  • 如果更大,'store'1

<强> 2。提取时间

  • 检查小时是否大于12

  • 如果没有,加上12(商店标志也说它会减去)

第3。如果更大(参考步骤1),则将1添加到提取的小时。

<强> 4。 24 - 提取小时是你的间隔。


请注意,这可能会大大减少/简化。

您的间隔(应该)正确到最近的半小时