PHP中date()函数取得时间错误解决方法
通过date()函数获取时间后,发现小时时间不对,比现在的时间小8个小时,无论用H,还是用h都一样,这个是因为当前获取的是格林威治时间,与北京时间相差8小时。
解决方法如下:
1、修改php.ini配置文件
打开php.ini文件,一般在php配置根目录下,找到其中的 ;date.timezone,删掉前面的分号,并改为date timezone = PRC。保存,重启Apahce服务即可(有时用restart会有问题,先stop然后start就行了)。
2、加上date_default_timezone_set(timezone_identifier)函数
这个函数的意思是,设置当前时区,对时间进行初始化,在页头或获取时间语句前加上这句话。
例如:
date_default_timezone_set(PRC);
echo date("Y-m-d H-i-s");
参数如下设置:
date_default_timezone_set(PRC) –设置为北京时间,PRC代表中华人民共和国
date_default_timezone_set(‘Asia/Shanghai’) –设置为上海时间,大陆可用的还有‘Chongqi’(重庆)、‘Urumqi’(乌鲁木齐)同样可以的
港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北)
新加坡地区:Asia/Singapore (好像就是没看到北京的)
此函数永远会返回True,但一定要输入timezone_identifier,不然会报错。
下面是所有的时区标识符:(供大家参考):
- CET
- CST6CDT
- Cuba
- EET
- Egypt
- Eire
- EST
- EST5EDT
- Etc/GMT
- Etc/GMT+0
- Etc/GMT+1
- Etc/GMT+10
- Etc/GMT+11
- Etc/GMT+12
- Etc/GMT+2
- Etc/GMT+3
- Etc/GMT+4
- Etc/GMT+5
- Etc/GMT+6
- Etc/GMT+7
- Etc/GMT+8
- Etc/GMT+9
- Etc/GMT-0
- Etc/GMT-1
- Etc/GMT-10
- Etc/GMT-11
- Etc/GMT-12
- Etc/GMT-13
- Etc/GMT-14
- Etc/GMT-2
- Etc/GMT-3
- Etc/GMT-4
- Etc/GMT-5
- Etc/GMT-6
- Etc/GMT-7
- Etc/GMT-8
- Etc/GMT-9
- Etc/GMT0
- Etc/Greenwich
- Etc/UCT
- Etc/Universal
- Etc/UTC
- Etc/Zulu
- Factory
- GB
- GB-Eire
- GMT
- GMT+0
- GMT-0
- GMT0
- Greenwich
- Hongkong
- HST
- Iceland
- Iran
- Israel
- Jamaica
- Japan
- Kwajalein
- Libya
- MET
- MST
- MST7MDT
- Navajo
- NZ
- NZ-CHAT
- Poland
- Portugal
- PRC
- PST8PDT
- ROC
- ROK
- Singapore
- Turkey
- UCT
- Universal
- UTC
- W-SU
- WET