我有这个简单的函数来减去时间:输入值是:
$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
。
任何帮助表示赞赏。
谢谢。
答案 0 :(得分:4)
尝试使用gmdate()
$time = gmdate( "H:i:s", strtotime($current) - strtotime($arrival));
答案 1 :(得分:2)
您不能指望此代码为您提供间隔。
strtotime($current) - strtotime($arrival)
行计算以秒为单位的时间间隔,但是当您将其传递给date
时,它会假定您说出了自纪元以来的时间间隔。所以你得到$time
的时区翻译价值;你必须得到9因为你可能落后于UTC
使用strtotime($current) - strtotime($arrival) / 3600
小时和余数除以60分钟。然后秒
答案 2 :(得分:1)
这就是为什么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
答案 3 :(得分: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
你的问题究竟是什么?