2017-02-17 23 views
0

我從API接收用戶的時區,但是當將該字符串發送到DateTimeZone的構造函數時,它的值爲AEDTAEST時失敗。DateTimeZone :: __ construct():未知或不好的時區(AEDT)

我檢查了我的timezonedb版本並更新爲「Olson」2016.10版本,但問題仍然存在。

根據these發佈說明,AEDTAEST應該是有效的時區。

任何方式我可以得到這兩個縮寫工作?看到我收到他們從外部的API,我不能真正改變它,如果它是無效的,除了一個醜陋的黑客:)

+0

http://php.net/manual/en/timezones.php→你能看到那裏的任何地方的時區...?如果不是,你需要用*裏面的東西來代替它們。 – deceze

+0

@deceze好,事情是,即使我沒有看到它,在本地(PHP 5.6.11)它的工作原理。唯一的區別是在生產服務器上我有PHP 5.5.9。 –

+1

*「__ Caution__這裏沒有列出的時區的行爲是未定義的。」* - 猜你發現了未定義的行爲,因此應該避免使用不支持的時區。 – deceze

回答

0

這是一段時間,因爲我解決了這個問題,但我記得它是PHP或timezonedb中的一個錯誤。

$date = new DateTime('2000-01-01', new DateTimeZone('Australia/Sydney'));並得到$date的時區導致AEDT,然後又被PHP認定爲有效時區。

我最終做的是將PHP升級到稍微更新的版本。

相關問題