今天遇到 date(“Y-m-d H:i:s”) 的时间总是与实际时间对不上。于是查询了相关资料知道了原因,整理如下。
出现这一现象的原因:
从php5.1.0开始,php.ini里加入了date.timezone这个选项,默认情况下是关闭的,也就是显示的时间时区。默认情况都是格林威治标准时间和我们的时间(北京时间)差了正好8个小时。
解决方法:
1、最简单的方法就是不要用php5.1以上的版本
2、修改php.ini配置文件
可在php.ini中查找date.timezone并修改.
Windows下php.ini一般在:C:/WINDOWS/php.ini
Linux下php.ini一般在:/etc/php.ini
按照上面提示找到php.ini下的date.timezone 这行,如果找不到可以自行添加。去除前面的分号,修改成 date.timezone = “Asia/Shanghai”,记得重启http服务(如apache2或iis等)即可。
date.timezone 分号后面的值参考,
大陆内地可用的值是:Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次为重庆,上海,乌鲁木齐)
港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北)
还有新加坡:Asia/Singapore
老外好像把北京漏调了
其他可用的值是:Etc/GMT-8 ,Singapore ,Hongkong ,PRC
PRC是什么?PRC是中华人民共和国啊
3、如果一定要用php5.1以上的版本,而且不能修改php.ini配置文件。
(1)在PHP代码处理时间时添加8小时得到正确中国时间 date(‘Y-m-d H:i:s’, time()+8*3600);
(2)在关于时间的初始化语句上面加上 date_default_timezone_set (XXX),或者在页头使用date_default_timezone_set(XXX)设置我的默认时区为北京时间 date_default_timezone_set(’Asia/Shanghai’)也可以。
附上官方php时区文档:
http://www.php.net/manual/zh/datetime.configuration.php#ini.date.timezone
date函数官方文档使用说明:
http://www.php.net/manual/zh/function.date.php
string date ( string $format [, int $timestamp ] )
格式字串可以识别以下format参数的字符串format字符 | 说明 | 返回值例子 |
---|---|---|
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答