PHP时区设置错误的问题


Problems with PHP time zone wrongly set

我有一个PHP没有正确反映实际时间的问题,结果所有服务器的脚本在未来总是5个小时。

如果我在命令行中运行这个,我得到。(Centos5) .

[root@server ~]# date
Sat May  4 11:20:17 CDT 2013

这是正确的(我从墨西哥和服务器有正确的时区和时间设置),如何做到这一点在PHP我得到…

[root@server ~]# php -r 'echo gmdate("D, d M Y H:i:s e")."'n";'
Sat, 04 May 2013 16:18:45 UTC

正如你所看到的,未来的时间是小时,我的php.ini应该也有正确的时区定义。

[Date]
; Defines the default timezone used by the date functions
date.timezone = America/Mexico_City

那么问题是什么呢?

gmdate()根据GMT(格林威治标准时间)返回时间,GMT(尽管不相同)与UTC可互换使用。你说你现在是在CDT,比UTC晚5个小时(因为夏令时生效)。

如果你想让脚本生成反映php.ini文件中设置的时区的日期时间字符串,你应该使用date()函数。更好的是,开始使用DateTime库。