1

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

$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。任何帮助表示赞赏。谢谢你。

4

4 回答 4

4

尝试使用gmdate()

$time = gmdate( "H:i:s", strtotime($current) - strtotime($arrival));
于 2013-08-01T03:04:04.737 回答
2

你不能指望这段代码给你一个间隔。

strtotime($current) - strtotime($arrival)行以秒为单位计算间隔,但是当您将其传递给date它时,假设您说的是自纪元以来的间隔。所以你得到时区翻译值$time; 你一定得了 9 因为你可能落后了UTC

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

于 2013-08-01T03:05:05.787 回答
1

这就是 PHP 有DateTime& DateIntervals 的原因:

<?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
于 2013-08-01T03:04:21.327 回答
1

此代码回显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

你的问题到底是什么?

于 2013-08-01T03:09:09.283 回答