2011-03-18 131 views
0

好吧,如何正確處理時區轉換?

我有一個問題。我正在建立一個網站,最終將持有大量的客戶數據記錄。由於客戶端可以導出和導入他們的數據,我必須能夠在站點和服務器中維護基於會話的時區。

現在我的服務器設置爲GMT。當我在shell中運行日期命令時,我發現這在發佈時是正確的。

Fri Mar 18 20:04:32 GMT 2011 

然後,當我做hwclock --show是給了我,再次,這是正確的。

Fri 18 Mar 2011 08:06:22 PM GMT 

現在,當我告訴PHP改變它的時區爲GMT-4(因爲這是在我的DST時區保理)

date_default_timezone_set('Etc/GMT-4'); 
echo date("m/d/Y g:i:s A T"); 

我得到2011年3月19日上午12時11分35秒格林尼治標準時間-5是完全錯誤的,而不是採取5個小時,它增加了5個小時。

於是我就這樣做:

date_default_timezone_set('Etc/GMT+4'); 
echo date("m/d/Y g:i:s A T"); 

我03/18/2011下午四時14分56秒GMT + 4。這是正確的時間。 MySQL做同樣的事情。似乎兩個人都想要反轉時間調整。我在設置上丟失了什麼?

回答

3

不,我認爲你誤解了符號/語法。

想法是,如果您想要到達的時區在主子午線以西,並且您設置了-它在它的東邊,那麼您設置了+。因此,它實際上並沒有什麼關係的小時數添加或拿走,而是要回去的例子,GMT + 4:

4個國家小時是格林威治

以西

這基本上是美國的東部邊緣,他們在英國身後幾個小時......這樣想想應該是有道理的。

+0

事實上,它並沒有使因爲在我設置日期時間的每臺計算機上的原因它顯示東部時區旁邊的GMT-5,但我想我只是在編程中反轉我的+/-。 – Pyromanci 2011-03-19 21:33:08