我有这段代码
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中更改为这些时区:
没有任何帮助。有什么想法吗?
更新&amp;解
根据评论中的建议,该问题与夏令时有关。我计算机上的小时设置为我所在国家/地区的正确当地时间。但是,我认为他们改变了移动时间的日期,大约1周前更改了,并且检查我的Windows控制面板它只是在4月1日期待它。
唯一对我有用的是将计算机上的时区更改为不同的时区。不是一个很好的解决方案,我可能需要在下周再次更换,但现在可以使用..
要更改Windows上的时区,这就是我所做的: 1)单击“开始”按钮,单击“控制面板”,单击“时钟”,“语言”和“区域”,然后单击“日期和时间”,打开“日期和时间”。 2)更改时区 - &gt;改变时区。 3)调整时间。
答案 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();