我有两个不同的时间,格式为 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
的正确方法