天天看點

[轉]php時區錯誤問題

http://bbs.chinahtml.com/showthread.php?s=63664bee85f19da15a67f991bef88393&p=312345

幾天發現一個問題 date("Y-m-d G:i T",time()) 取出來的時間和本地時間老差8個小時,可我的系統明明是中國标準時(GMT+8),最後終于找到了問題所在:

原來從php5.1.0開始,php.ini裡加入了date.timezone這個選項,預設情況下是關閉的

也就是顯示的時間(無論用什麼php指令)都是格林威治标準時間

和我們的時間(中原標準時間)差了正好8個小時,有以下3中方法可以恢複正常的時間。

1,最簡單的方法就是不要用php5.1以上的版本

2,如果一定要用,而且不能修改php.ini,則需要在關于時間的初始化的語句的

上面加上 date_default_timezone_set (XXX);

3,一勞永逸,僅限能修改php.ini。打開php.ini查找date.timezone 去掉前面的分号

= 後面加XXX,重新開機http服務(如apache2或iis等)即可

關于XXX,大陸内地可用的值是:Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次為重慶,上海,烏魯木齊)

港台地區可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次為澳門,香港,台北)

還有新加坡:Asia/Singapore

老外好像把北京漏調了

其他可用的值是:Etc/GMT-8 ,Singapore ,Hongkong ,PRC

PRC是什麼?PRC是中華人民共和國啊-_-

以上都是我從php官方說明檔裡整理出來的GMT-8下面的地區,可能會有遺漏

你可以http://www.php.net/docs.php上查到更多的地區

由于程式最後還是會把地名轉為時區來計算,是以當你使用的不是内置的區域的時候,程式将自動使用格林威治标準時間