您的位置:首页 > 编程语言 > PHP开发

php date时间本地化问题 或是date函数时差问题的解决

2010-05-20 11:17 483 查看
公司反应耐飞家教和兼职后台显示的时间跟实际注册的时间相差8小时。
发现时间一直对不上,date("Y-m-d h:i:s") 总是与服务器时间差8个小时.后来发现,我现在的机器上的php是5.14的. 
原来从php5.1.0开始,php.ini里加入了date.timezone这个选项,默认情况下是关闭的
也就是显示的时间(无论用什么php命令)都是格林威治标准时间
和我们的时间(北京时间)差了正好8个小时
解决方法:
方法一:
在程序中加入:
date_default_timezone_set ("Asia/Sanghai"); 这样搞定了.
方法二( 我就用了此方法解决):
能修改php.ini。打开php.ini查找date.timezone 去掉前面的分号
= 后面加XXX(见下面,如:= Etc/GMT-8),重启http服务(如apache2或iis等)即可

PHP的时区环境通过一组特定的字符串指定。参见PHP所支持的时区列表
最省事的办法是在php.ini文件中找到date.timezone一行,默认情况下这一行是被注释掉的,删掉前面的分号即可启用。对于中国大陆,可把它设置为Etc/GMT-8(或Asia/Sanghai、Asia/Chongqing、Asia/Urumqi、PRC)。
如果由于某种原因不能修改php.ini,可以在PHP程序里用date_default_timezone_set()设置。例如,可以在使用date函数前先执行date_default_timezone_set('Etc/GMT-8')。
我个人认为还是采用date_default_timezone_set函数比较好。一是通用性强,二来如果你的网站是面向全球用户的,这种方法可以让每个用户都能设置他所在的时区。
最后需要说明的是对于Etc/GMT这种写法。中国大陆采用的是东八区的时间,一般情况下都是记作+8,但PHP里来了个大反个儿,要写成Etc/GMT-8;相反地,如果你的时区是西2区,在PHP里就要写成Etc/GMT+2。这一点和常识不同,尤其要注意。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息