PHP中24小时时钟系统的时差问题

时间:2018-09-02 20:42:08

标签: php time

im试图计算两个不同时间之间的时间,并以小时为单位输出它们。它会显示给客户,以查看服务将花费多少时间。

那是我的代码:

$datetime1 = new DateTime($timeFROM);
$datetime2 = new DateTime($timeTO);
$interval = $datetime2->diff($datetime1);
$hour_decimal = number_format(intval($interval->format('%H')) + round(intval($interval->format('%I')) / 60, 2), 2, '.','');
echo $hour_decimal;

该代码对于经典工作而言效果很好,但是对于夜间工作则变得更加复杂,因为如果第二时间值($timeTO)在00:00之后,则其计算范围为$timeTO至{{1} },而不是$timeFROM$timeFROM

示例:

$timeTO

输出= 2.00 没错。

示例2:

$timeFROM = "6:00";
$timeTO = "8:00";

输出= 22.50多数民众赞成在错。应该是1.50

似乎我需要强制该函数始终从$timeFROM = "23:30"; $timeTO = "1:00"; $timeFROM进行计算,无论哪个值更大,都不能相反。

有人知道吗?在Google中找不到任何东西,也不知道该如何向Google询问。很抱歉,解决方案可能很简单!

问候

1 个答案:

答案 0 :(得分:0)

如果datetime2小于datetime1,则仅需要向前计算,则增加24小时:

if ($datetime2 < $datetime1) {
    $datetime2->add(new DateInterval("PT24H"));
}