DateTime / DateInterval每次刷新增加25小时会产生完全不同的结果

时间:2013-03-26 01:53:43

标签: php datetime dateinterval

这是我的代码:

$timezone = new \DateTimeZone('America/New_York');
    $date1 = new \DateTime (date("Y:m:d H:i:s", time()), $timezone);
    $date1->add(new \DateInterval ("PT24H"));
    echo $date1->format('Y-m-d h:s:m');

这应该在当前时间增加24小时。问题是,每次刷新页面时,我都会得到不同的结果。而且我并不是说像人们期望的那样仅仅几秒钟,我的意思是很多分钟。有些高于实际时间,有些低于它。

现在在下午9:51三次刷新给出以下结果:2013-03-26 09:09:03,2013-03-26 09:17:03,2013-03-26 09:30:03

为什么我不能获得实时?发生了什么事?

感谢您的帮助!

1 个答案:

答案 0 :(得分:8)

错误发生在您的上一个echo语句

echo $date1->format('Y-m-d h:s:m');

将其更改为:

echo $date1->format('Y-m-d h:i:s');

每次刷新都会刷新您设置为秒而不是分钟的中间值,因此每3秒更新一次显示为3分钟更新。此外,您的分钟显示为m,这是月份数的日期格式,因此它显示为3表示3月的数字表示。我已将此更改为i以表示分钟。

我上面的代码在伦敦工作,代码如下:

$date1 = new DateTime('America/New_York');
$date1->add(new DateInterval("PT24H"));
echo $date1->format('Y-m-d h:i:s');

现在显示3月26日晚上10:07,这是纽约当前时间之后的24小时