无论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;
?>
但是在上面的内容中,这并没有多大帮助。
答案 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
<强> 2。提取时间
检查小时是否大于12
如果没有,加上12(商店标志也说它会减去)
第3。如果更大(参考步骤1),则将1添加到提取的小时。
<强> 4。 24 - 提取小时是你的间隔。
请注意,这可能会大大减少/简化。
您的间隔(应该)正确到最近的半小时