PHP';s日期使用导致2小时错误

PHP';s日期使用导致2小时错误,php,Php,我正在使用date('H:I:s',(time()-$start['time'])来显示自脚本开始以来经过的时间 无论time()-$start['time']的结果是什么,无论是0、17还是打印出来的日期,如02:00:00、02:00:17等 原因可能是什么?时间返回一个绝对数字时间戳,例如2012-06-04 16:35:12的数值。您的开始时间是一个类似的数字、绝对时间戳。从另一个中减去一个将得到一个非常小的数字,也就是一个绝对时间戳。可能在1970年初左右。使用date('H:i:s'

我正在使用
date('H:I:s',(time()-$start['time'])
来显示自脚本开始以来经过的时间

无论
time()-$start['time']
的结果是什么,无论是0、17还是打印出来的日期,如02:00:00、02:00:17等


原因可能是什么?

时间
返回一个绝对数字时间戳,例如
2012-06-04 16:35:12的数值。您的开始时间是一个类似的数字、绝对时间戳。从另一个中减去一个将得到一个非常小的数字,也就是一个绝对时间戳。可能在1970年初左右。使用
date('H:i:s')
格式化时间戳时,只显示时间戳的时间部分,如
1970-01-01 02:00:00

读什么

您要查找的时差是
time()-$start['time']
的结果,它以秒为单位,不能简单地使用
date()
格式化。更多内容包括:

$diff = time() - $start['time'];
echo 'Difference in seconds: ' . $diff;
echo 'Difference in minutes: ' . $diff / 60;
echo 'Difference in hours: '   . $diff / 60 / 60;

似乎你有一个2小时的补偿增加

// save current TZ
$current_tz = date_default_timezone_get();
// Use universal time
date_default_timezone_set('UTC');
$t = time();
echo "T:".$t."<br/>";
sleep(2);
echo "T2: ".date('H:i:s', time() - $t );
// return correct TZ
date_default_timezone_set($current_tz);
//保存当前的TZ
$current_tz=日期_默认值_时区_get();
//使用世界时
日期\默认\时区\设置('UTC');
$t=时间();
回声“T:.$T.”
; 睡眠(2); echo“T2:.date('H:i:s',time()-$t); //返回正确的TZ 日期\默认\时区\设置($current\ tz);
如果我在没有日期默认时区设置('UTC')的情况下尝试此代码,它会给出从夏季开始的预期值+1小时(GMT+1)。如果您只需要2次之间的差异,则可以使用UTC进行这两次计算,并且只能得到差异,或者您可以检查当前时间偏移并将其减去


希望它能有所帮助

如果你不告诉我们你是如何设置$start['time']的,很难说,$start['time']是从哪里来的?你为什么不简单地使用microtime()?你从哪里开始?
$start['time']
检查你的时区设置,或者如果你没有很好地设置时区,实际上这并不重要,因为他只显示小时、分和秒。如果他对绝对日期不感兴趣,那就没有问题。将相对时间戳增量视为绝对时间戳(取决于时区设置等)总是有问题的。时间增量和绝对时间戳根本不是一回事。