與許多網絡應用程序一樣,我正在開發的應用程序需要爲我們親愛的最終用戶轉換時區。然而,正如我在PHP 5.3與碳/日期時間的工作,我發現這個奇怪:PHP時區等/ GMT + 5變成-0500?
$date_str = '2014-04-15 12:00:00'; // from database
$date = new DateTime($date_str,new DateTimeZone('GMT'));
$date->setTimezone(new DateTimeZone('Etc/GMT+5'));
echo $date->format('Y-m-d H:i:s O'); // 2014-04-15 07:00:00 -0500
我設置了$date
的時區爲GMT + 5,但是當我格式化$date
,它成爲-0500
代替預計+0500
。
同樣,如果我將其設置爲負數,即Etc/GMT-5
,則格式將顯示+0500
而不是預期的-0500
。
任何人都能夠啓發?
我能夠在PHP 5.3.3,5.3.13,5.3.28中複製這個問題。認爲這是一個PHP特定版本的錯誤。一個錯誤或功能?
'新的DateTimeZone('GMT + 5')'拋出'未知或不好的時區(GMT + 5)'異常。但是,感謝* tz數據庫*的解釋! – mauris
@mauris:適用於我的本地系統,不知道爲什麼。我覺得這不是正確的做法。無論哪種方式,而不是使用偏移量,嘗試使用特定的時區。這可能會起作用。 –
我將繼續存儲時區標識符,例如「歐洲/倫敦」在我的數據庫設置轉換然後。感謝您的輸入! – mauris