使用 strtotime 获取时间之间的差异返回不同的值



我有两个不同的时间,格式为 24 小时,即时间和超时。给定以下情况:

$timeIn = "19:00";
$timeOut = "09:00";
//calculated it using strtotime
$timeDiff = strtotime($timeIn) - strtotime($timeOut);
$timeDiff = ($timeDiff/60)/60;
//result is 10:00

对于这个,它不是返回 14 小时,而是只返回 10 小时。我怎样才能抓住这个?

更新

感谢您的评论。这是我的做法:

if($timeIn > $timeOut){
$timeDiff = 24 - abs(strtotime($timeIn)/60)/60;
$timeDiff += $timeOut;
}else{
$timeDiff = strtotime($timeIn) - strtotime($timeOut);
$timeDiff = ($timeDiff/60)/60;
}

哦.. 您可以使用日期时间,如以下示例所示:

<?php
$timeIn = new DateTime("2019-09-14 19:00:00");
$timeOut = new DateTime("2019-09-15 09:00:00");
$interval = $timeOut->diff($timeIn);
echo $interval->h;
?>

您需要在时间戳中计算它,但要制作完整的时间,您需要使用完整的日期格式

例:

$timeIn = "2018-09-14 19:00:00";
$timeOut = "2018-09-15 09:00:00";
//calculated it using strtotime
$timeDiff = strtotime($timeIn) - strtotime($timeOut);

它会起作用

对于这种方法,我已经使用此公式解决了它,并且不需要使用datetime因为我的数据上没有日期。

if($timeIn > $timeOut){
$timeDiff = 24 - abs(strtotime($timeIn)/60)/60;
$timeDiff += $timeOut;
}else{
$timeDiff = strtotime($timeIn) - strtotime($timeOut);
$timeDiff = ($timeDiff/60)/60;
}

希望这对其他人有所帮助。

返回10小时的函数是正确的和可预期的行为。

19-9=10

PHP 不知道你想计算从 19:00 到第二天9:00 的小时数。 Plase参考D.Dimitrovs的答案,它显示了使用DateTime的正确方法

最新更新