为什么我在减去两次时会得到意外的时间


Why do I get unexpected hour when substracting two times

我有一个简单的函数来减去时间:输入值是:

$current = '23:48:32';
$arrival = '23:41:48';
$time = date( "H:i:s", strtotime($current) - strtotime($arrival));
$waitingTime = $time; // 21:06:44

看起来分钟的差异是正确的,我不确定为什么我在分钟前得到21分。它应该是00:06:44。感谢您的帮助。非常感谢。

尝试使用gmdate()

$time = gmdate( "H:i:s", strtotime($current) - strtotime($arrival));

您不能期望此代码给您一个间隔。

CCD_ 3行以秒为单位计算间隔,但当您将其传递给CCD_。因此您可以获得$time的时区转换值;你一定得了9分,因为你可能落后于UTC

使用strtotime($current) - strtotime($arrival) / 3600表示小时,余数除以60表示分钟。然后秒

这就是为什么PHP有DateTime&DateInterval s:

<?php
header('Content-Type: text/plain; charset=utf-8');
$current = '23:48:32';
$arrival = '23:41:48';
$current = DateTime::createFromFormat('H:i:s', $current);
$arrival = DateTime::createFromFormat('H:i:s', $arrival);
$diff = $current->diff($arrival);
unset($current, $arrival);
echo $diff->format('%H:%I:%S');
?>

输出:

00:06:44

此代码回显00:06:44

$current='23:48:32';
$arrival='23:41:48';
$time = date( "H:i:s", strtotime($current) - strtotime($arrival));
echo $time;//00:06:44

你到底有什么问题?