我有这个简单的函数来减去时间:输入值是:
$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));
你不能指望这段代码给你一个间隔。
该strtotime($current) - strtotime($arrival)
行以秒为单位计算间隔,但是当您将其传递给date
它时,假设您说的是自纪元以来的间隔。所以你得到时区翻译值$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
你的问题到底是什么?