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询问。很抱歉,解决方案可能很简单!
问候
答案 0 :(得分:0)
如果datetime2小于datetime1,则仅需要向前计算,则增加24小时:
if ($datetime2 < $datetime1) {
$datetime2->add(new DateInterval("PT24H"));
}