php - php在使用strtotime返回不同值时获得不同的时间

  显示原文与译文双语对照的内容
72 3

我在 24-hr 格式有两个不同的时间,时间和超时。给出以下方案:

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

用这个方法,它只返回 10hrs,而不是返回 14小时。我怎么能把这个拿出来?

更新

感谢你的评论。以下是我的工作方式:

if($timeIn> $timeOut){
 $timeDiff = 24 - abs(strtotime($timeIn)/60)/60;
 $timeDiff += $timeOut;
}else{
 $timeDiff = strtotime($timeIn) - strtotime($timeOut);
 $timeDiff = ($timeDiff/60)/60;
}
时间:原作者:0个回答

85 4

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

<?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;
?>
原作者:
140 2

你需要计算时间戳,但是要完成你需要使用完整日期格式的完整时间

例如:

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

而且它会工作

原作者:
100 1

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

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

希望这对其他人有帮助。

原作者:
128 1

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

19-9=10

PHP不知道你想从第二天开始计算小时1: 5 到2: 00.Plase参考 D.Dimitrovs 答案,使用 DateTime 显示正确的方式

原作者:
...