HH:MM:SS差异在PHP中返回错误的答案



我正在使用此代码来计算时间段。实际上,我想要两个HH:MM:SS时刻之间的时期,并具有HH:MM:SS格式的结果。

$time1 = strtotime('00:00:00');
$time2 = strtotime('00:00:07');
$diff = $time2 - $time1;
$diff = date('H:i:s', $diff);

我期待00:00:07,但我会得到01:00:07。有什么问题?

欧文在这里运行,得到正确的答案,但是我在本地机器上运行了相同的代码,并且错误!是时区还是某种配置效果结果?!

请停止使用strtotimedate功能。使用DateTime类。

,如果您可以更好地搜索,那么找到两个日期的差异已经结束了。例如,我在这里的答案。略微改变它看起来像:

$create_time = "00:00:00";
$current_time="00:00:07";
$dtCurrent = DateTime::createFromFormat('H:i:s', $current_time);
$dtCreate = DateTime::createFromFormat('H:i:s', $create_time);
$diff = $dtCurrent->diff($dtCreate);
echo $diff->format("%H:%I:%S"); // to get HH:MM:SS format

这返回00:00:07有关更多格式的详细信息,请参见DateInterval::format

是因为当您从时间2减去时间1时,您最终会得到7;

日期函数需要时间戳,7不是时间戳。

您可以使用http://php.net/manual/en/datetime.diff.php来计算差异?

您应该考虑取消INI设置中的时区衍射的Unix时期。是1月1日。您可以通过添加eOP检查服务器/应用程序的设置。检查此代码:

$time1 = strtotime('00:00:00 +0000');
$time2 = strtotime('00:00:07 +0000');
$epoch = strtotime('01 Jan 1970');
$diff = $time2 - $time1;
var_dump($time1,$time2,$epoch,$diff);
$diff = date('H:i:s', $epoch+$diff);
echo $diff;

最新更新