我试图计算两个不同时间之间的时间,并以小时为单位输出它们。它将显示给客户,以查看服务将花费多长时间。
这是我的代码:
$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到$timeFROM,而不是$timeFROM到$timeTO。
示例:
$timeFROM = "6:00";
$timeTO = "8:00";输出= 2.00,这是正确的。
示例2:
$timeFROM = "23:30";
$timeTO = "1:00";输出= 22.50,这是错误的。应该是1.50
看起来,我需要强制函数总是从$timeFROM计算到$timeTO,而不是相反,不管哪个值更大。
有什么主意吗?在google中找不到任何东西,也不知道如何才能确切地要求google。对不起,解决办法可能很简单!
问候
发布于 2018-09-02 20:56:33
如果只想进行前向计算,则如果datetime2小于datetime1,则添加24小时:
if ($datetime2 < $datetime1) {
$datetime2->add(new DateInterval("PT24H"));
}https://stackoverflow.com/questions/52140878
复制相似问题