关于php5.*后的时区问题 date_default_timezone_set ();

简介: 问题:php函数date("Y-n-d H-i-s"); 输出的时间与当地时间相差8个小时.解决思路:北京时间是东8区,可能是时区问题.但是此前都没问题啊,经过google发现原来从php5.1.0开始,php.ini里加入了 date.timezone这个选项,默认情况下是关闭的,也就是显示的时间(无论用什么php命令)都是格林威治标准时间,和我们的时间(北京时间)差 了正好8个小时。

问题:
php函数date("Y-n-d H-i-s"); 输出的时间与当地时间相差8个小时.

解决思路:
北京时间是东8区,可能是时区问题.但是此前都没问题啊,经过google发现原来从php5.1.0开始,php.ini里加入了 date.timezone这个选项,默认情况下是关闭的,也就是显示的时间(无论用什么php命令)都是格林威治标准时间,和我们的时间(北京时间)差 了正好8个小时。

知道了问题,当然就要解决了,

1、可以date_default_timezone_set ('Etc/GMT-8');
红色标记部分可以改为"Etc/GMT-8","PRC"这两个在php帮助手册->附录 H. 所支持时区列表->其它时区列表里。
红色标记部分也可以改为"Asia/Shanghai","Asia/Chongqing","Asia/Urumqi"这三个在php帮助手册->附录 H. 所支持时区列表->亚洲时区列表里
测试
date_default_timezone_set ('Asia/Shanghai');
echo date_default_timezone_get ();
echo date("Y-n-d H-i-s");
输出结果:2007-4-21 10-28-25正确。

2、上面的修改是通过脚本修改,优点就是可移植性好,缺点就是每个脚本都要加。我们也可以通过修改php.ini的配置来达到目的。打开php.ini查 找date.timezone 去掉前面的分号,等号后面填上上面红色标记的字段。修改结果是date.timezone ="Etc/GMT-8"
date_default_timezone_set ('Asia/Shanghai');
echo date_default_timezone_get ();
echo date("Y-n-d H:i:s");


输出结果:2007-10-21 10:30:35正确。

目录
相关文章
|
10月前
|
Unix PHP
PHP快速入门05-时间日期与时区,附30个常用案例
PHP中的日期和时间处理功能极其强大,包括了多种格式化、解析、比较等常用操作。本文主要对此讲解。另外给出30个高频使用示范。
107 0
|
存储 PHP
PHP为什么需要设置session_set_cookie_params()函数来配置session的cookie参数?
PHP为什么需要设置session_set_cookie_params()函数来配置session的cookie参数?
105 0
|
PHP
php event异常处理,php set_exception_handler无效
php event异常处理,php set_exception_handler无效
128 0
|
网络协议 PHP
php stream_set_blocking设置非阻塞模式,php stream_set_blocking影响函数fgets()和fread()
php stream_set_blocking设置非阻塞模式,php stream_set_blocking影响函数fgets()和fread()
250 0
【开发环境】php.ini设置时区不生效
【开发环境】php.ini设置时区不生效
371 0
【开发环境】php.ini设置时区不生效
|
Unix PHP
PHP中关于时间(戳)、时区、本地时间、UTC时间等的梳理
PHP中关于时间(戳)、时区、本地时间、UTC时间等的梳理 在PHP开发中,我们经常会在时间问题上被搞糊涂,比如我们希望显示一个北京时间,但是当我们使用date函数进行输出时,却发现少了8个小时。几乎所有的php猿类都必须对php中几个重要的时间转换等方法进行研究。
2139 0