2011-09-20 58 views
1

可能重複:
Daylight saving time and Timezone best practices夏令問題

基本上我有以下問題:

我有一個表與所有的GMT偏移量,並根據計算,我用戶的小時數相對於服務器的小時數,但有些小時數是關閉的。

所以我的功能看起來像這樣,它需要GMT +/- 3600 * usersTZ(GMT偏移)。 倫敦看起來不錯,澳大利亞看起來不錯,但嘿薩摩亞,而不是例如:5它是`6.

我想這可能是夏時制,任何ideeas情況?

+0

[PHP的DateTime和strtotime是DST知道](http://stackoverflow.com/questions/2505681/timezone-conversion-in-php/2505687#2505687)。改用它們。 – Gordon

+0

謝謝Gordon,但在回答問題之前,請提問問題,例如論壇機器人:p。我已經檢查了上述主題,時間不工作,薩摩亞時間沒有正確顯示'太平洋/薩摩亞'時區的時間,現在應該是星期一晚上9點01分(WST),我認爲這是相當不友好的,因爲薩摩亞是格林威治標準時間-11,這使得晚上10點。此外,我需要根據每個客戶的TZ – Gabriel

+0

做到這一點,然後我想知道爲什麼您接受了從一開始就表明我的建議的答案? – Gordon

回答

2

PHP可以本地處理時區。你只需要設置像美國/紐約的olson format時區。

然後,您可以使用date_default_timezone_set或任何其他PHP日期時間的東西,理解時區。

仔細閱讀PHP docs會很有幫助。特別是herehere

+0

是的,但不會改變整個腳本中所有日期和時間函數的所有日期和時間行爲,其中我只能修改一個函數,此外,這不是我的服務器和更改功能以滿足我的需要開發人員不是一種選擇。 – Gabriel

+0

這只是一個簡單的方法來做到這一點的例子。您可以使用'DateTime'類代替'DateTimeZone'對象作爲參數。 正如我之前所說,我強烈建議您閱讀文檔。 – blockhead

+0

嘗試過,但它說它不承認類,我害怕這意味着沒有考慮到PHP的編譯。不要奢望重新編譯PHP。 – Gabriel