前幾天發(fā)現(xiàn)一個(gè)問題 date("Y-m-d G:i T",time()) 取出來的時(shí)間和本地時(shí)間老差8個(gè)小時(shí),可我的系統(tǒng)明明是中國標(biāo)準(zhǔn)時(shí)(GMT+8),最后終于找到了問題所在:

原來從php5.1.0開始,php.ini里加入了date.timezone這個(gè)選項(xiàng),默認(rèn)情況下是關(guān)閉的

也就是顯示的時(shí)間(無論用什么php命令)都是格林威治標(biāo)準(zhǔn)時(shí)間

和我們的時(shí)間(北京時(shí)間)差了正好8個(gè)小時(shí),有以下3中方法可以恢復(fù)正常的時(shí)間。

1,最簡(jiǎn)單的方法就是不要用php5.1以上的版本

2,如果一定要用,而且不能修改php.ini,則需要在關(guān)于時(shí)間的初始化的語句的
上面加上 date_default_timezone_set (XXX);

3,一勞永逸,僅限能修改php.ini。打開php.ini查找date.timezone 去掉前面的分號(hào)
= 后面加XXX,重啟http服務(wù)(如apache2或iis等)即可


關(guān)于XXX,大陸內(nèi)陸可用的值是:Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次為重慶,上海,烏魯木齊)
港臺(tái)地區(qū)可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次為澳門,香港,臺(tái)北)
還有新加坡:Asia/Singapore
老外好像把北京漏調(diào)了
其他可用的值是:Etc/GMT-8 ,Singapore ,Hongkong ,PRC
PRC是什么?PRC是中華人民共和國啊-_-
以上都是我從php官方說明檔里整理出來的GMT-8下面的地區(qū),可能會(huì)有遺漏
你可以http://www./docs.php上查到更多的地區(qū)

由于程序最后還是會(huì)把地名轉(zhuǎn)為時(shí)區(qū)來計(jì)算,所以當(dāng)你使用的不是內(nèi)置的區(qū)域的時(shí)候,程序?qū)⒆詣?dòng)使用格林威治標(biāo)準(zhǔn)時(shí)間