今天在PHP5下用date("H:i:s")時,發現參數"H"取出的時間與window下的時間不對。查了一下資料,發現是PHP5的php.ini里面默認設置為:
[Date]
; Defines the default timezone used by the date functions
;date.timezone =
如此一來,按照默認的時間便為GMT時間。而我們一般是使用北京時間,可以設置為:date.timezone = PRC或date.timezone = Asia/Shanghai。即:
[Date]
; Defines the default timezone used by the date functions
date.timezone = Asia/Shanghai
記得不要設置為"Asia/Beijing",老外好象對上海感興趣點,呵呵。
如果沒有權限改php.ini,可以用函數date_default_timezone_set('PRC');或date_default_timezone_set('Asia/Shanghai');
這個函數用於設定所有日期時間函數的默認時區。手冊上如此說明:“自 PHP 5.1.0 起(此版本日期時間函數被重寫了),如果時區不合法則每個對日期時間函數的調用都會產生一條 E_NOTICE 級別的錯誤信息”。但是“本函數永遠返回 TRUE(即使 timezone_identifier 參數不合法)。”
在此再學習一下函數:string date_default_timezone_get ( void )。這個函數的目的是取得一個腳本中所有日期時間函數所使用的默認時區。
這個函數的返回值遵循以下順序:1:用 date_default_timezone_set() 函數設定的時區(如果設定了的話)。2:TZ 環境變量(如果非空)。3:date.timezone 配置選項(如果設定了的話)。4:自己推測(如果操作系統支持)。5:如果以上選擇都不成功,則返回 UTC
再深入學習一下什麼是UTC:
協調世界時(UTC):
一種稱為協調世界時的折衷時標於1972年面世。為了確保協調世界時與世界時(UT1)相差不會超過0.9秒,有需要時便會在協調世界時內加上正或負閏秒。因此協調世界時與國際原子時(TAI)之間會出現若干整數秒的差別。位於巴黎的國際地球自轉事務中央局(IERS)負責決定何時加入閏秒。
UTC = Coordinated Universal Time. 中文名稱為協調世界時.
GMT = Greenwich Mean Time. 中文名稱為格林尼治(平)時(這里的"w"是不發音的,而且"Green"要讀成"Gren")
UTC = GMT +/- 0.9 s
因此 UTC 間中需要進行 "閏秒" 以控制兩者相差。
php5.1x的時區問題導致相差八個小時!收藏
從php5.10開始,php中加入了時區的設置,在php中顯示的時間都是格林威治標準時間,這就造成了我們中國的用戶會差八個小時的問題!
相關設置是修改php.ini中的 date.timezone 參數:
[Date]
; Defines the default timezone used by the date functions
;date.timezone =
默認是關閉的,只需把注釋去掉,改為即可
[Date]
; Defines the default timezone used by the date functions
date.timezone = PRC
其中PRC是“中華人民共和國”!
其他選項可以參考php手冊。
不過這上面的亞洲地區漏掉了我們的首都北京,不知道老外是不是故意的!
如果沒有修改php.ini的權限,只需要在調用時間日期函數的時候,調用 date_default_timezone_set(’PRC’) 即可!
也可以調用date_default_timezone_get()來查看當前的時區設置!