PHP:时间戳差异不正确

时间:2011-02-16 15:11:27

标签: php timestamp

情况

我有两个时间戳。

一个是开始时间,一个是结束时间。

开始时间是:04:43:37
结束时间是:11:59:59

现在我想尝试区分这样的日期:

//define timestamps
$start_time     = 1297698217;
$end_time      = 1297724399;
$time_diff    = $end_time - $start_time;

//display times and difference
echo 
    '<b>Start time:</b> ' . date('d-m-Y h:i:s', $start_time) . '<br />' .
    '<b>End time:</b> ' . date('d-m-Y h:i:s', $end_time) . '<br />' .
    '<b>Time difference::</b> ' . date('h:i:s', $time_diff);


结果

Start time: 14-02-2011 04:43:37
End time: 14-02-2011 11:59:59
Time difference: 08:16:22


问题

现在的问题是结果应该是07:16:22。我已经尝试了不同的时间,但每次我得到相同的结果。一小时差异太大了。

是否有专家愿意提供帮助?

2 个答案:

答案 0 :(得分:6)

最后一个应该是gmdate而不是date

'<b>Time difference::</b> ' . gmdate('h:i:s', $time_diff);

date会调整您当前的区域设置,该区域设置似乎是GMT + 1。 gmdate没有进行调整。

我假设您只计划在24小时内使用此差异。

答案 1 :(得分:0)

你要求它将1970-01-01 07:16:22变成一个时间字符串进行显示 - 根据你的时区会有差异。

要使其成为GMT日期,请使用gmdate(),但是当时差达到> 24小时时,这仍会导致问题。