PHP gmdate返回

时间:2016-03-29 19:35:03

标签: php

我有这段代码

if (date_default_timezone_get()) {
    echo 'date_default_timezone_set: ' . date_default_timezone_get() . '<br />';
}

echo 'time: ' .date('Y-m-d H:i:s'). '<br />';


if (ini_get('date.timezone')) {
    echo 'date.timezone: ' . ini_get('date.timezone'). '<br />';
}

echo 'time: ' .gmdate("Y-m-d\TH:i:s.\\0\\0\\0\\Z", time()). '<br />';

这是我得到的输出

date_default_timezone_set: Europe/London
time: 2016-03-29 21:26:41
date.timezone: Europe/London
time: 2016-03-29T20:26:41.000Z

所以我的php.ini设置为伦敦,而GMT仍落后一小时。 无论我做什么,gmdate总是在同一时间,这是错误的,因为参加世界时钟,GMT时间现在是19:26。

我在localhost上运行。 我当地时间&amp;运行代码时的机器时间是22:26。 我尝试在php.ini中更改为这些时区:

  • 亚洲/科威特 - 格林威治标准时间+4
  • 亚洲/耶路撒冷 - 格林尼治标准时间+3
  • 欧洲/柏林 - GMT + 1
  • 欧洲/伦敦 - 0

没有任何帮助。有什么想法吗?

更新&amp;解

根据评论中的建议,该问题与夏令时有关。我计算机上的小时设置为我所在国家/地区的正确当地时间。但是,我认为他们改变了移动时间的日期,大约1周前更改了,并且检查我的Windows控制面板它只是在4月1日期待它。

唯一对我有用的是将计算机上的时区更改为不同的时区。不是一个很好的解决方案,我可能需要在下周再次更换,但现在可以使用..

要更改Windows上的时区,这就是我所做的: 1)单击“开始”按钮,单击“控制面板”,单击“时钟”,“语言”和“区域”,然后单击“日期和时间”,打开“日期和时间”。 2)更改时区 - &gt;改变时区。 3)调整时间。

4 个答案:

答案 0 :(得分:0)

看起来是正确的:)

gmdate不考虑夏令时

时间落后一小时似乎证实了这一点。

date 功能似乎在调整自己 - 尝试使用它。

查看http://php.net/manual/en/function.gmdate.php - 虽然我怀疑你已经拥有。

答案 1 :(得分:0)

我猜是因为时间的变化?您可以手动更改时间或使用类似这样的API:http://www.timeapi.org/

希望这有帮助!

答案 2 :(得分:0)

jacmoe所说的是正确的。 Greenwich Mean Time网站表现出与gmdate()date()功能相同的行为。

答案 3 :(得分:0)

澄清一下,gmdate() 不能直接考虑夏令时,这是一个非常无用的函数。最干净的方法是使用普通的日期函数,事先设置你的时区,例如:

date_default_timezone_set('Europe/London');
echo time();