strtotime方法使用前請注意系統時區

strtotime在將一個潛在的時間字符串轉換爲正確的時間時,會使用到當前系統時區。如果系統時區與所給目標字符串所示時區不一樣時,那麼在調用後,其生成的時間將與想象中的時間有時間偏差。因此,需要在調用該方法前,首先確定當前系統時區。

 

我們可以調用date_default_timezone_get()獲取當前時區。通常默認的時區爲UTC也就是標準時區+0000;設置系統時區有兩種方式:

1、修改php.ini配置文件。

[Date]
; Defines the default timezone used by the date functions
;date.timezone =

將上述部分的date.tiemzone放開,並設置爲需要的時區

 

2、在需要設置時區的地方調用date_default_timezone_set()方法來設置時區。

 

下面我們就以"Sat May 14 22:35:44 +0800 2011"爲例進行說明。我們的目標是獲取其中的'22:35:44'時間。

 

可以看到'Sat May 14 22:35:44 +0800 2011'爲+0800時區,也就是所謂的北京時間了。那麼我們需要在strtotime該字符串前,確保系統時區爲北京時區。PHP中北京時區可以用PRC表示。如果是PHP5+也可用Asia/Shanghai或者Asia/Chongqing來設置。

 

這裏我們採用第二種方式來設置系統時區。我們的測試代碼如下:

顯示結果如下:

 

未設定時區前
時間字符串 Sat May 14 22:35:44 +0800 2011
當前時區 UTC
字符轉化後日期格式('r') Sat, 14 May 2011 14:35:44 +0000
字符轉化後日期格式('H:i:s') 14:35:44

 

設定時區後
時間字符串 Sat May 14 22:35:44 +0800 2011
當前時區 Asia/Shanghai
字符轉化後日期格式('r') Sat, 14 May 2011 22:35:44 +0800
字符轉化後日期格式('H:i:s') 22:35:44

注意: 在使用第二種方式時,在使用完成後,應將系統時區還原到初始設置。避免後續調用錯誤。

 

PS: 其他的時區設置及代碼中涉及到的方法,可以通過查看PHP API瞭解更多的用法。http://www.php.net/manual/zh/index.php

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章