[英]Why is it unparsable date with timezone WAT in Java9?
@Gibbs,確實,它失敗了......
我無法使用已安裝的 JDK 版本測試錯誤,但我遇到了您在屏幕截圖中顯示的在線編輯器。
這不是一個完整的答案,但讓我解釋一下我的發現。
首先,問題出現在 Java 版本 10.0.1 中。 使用SimpleDateFormat
或DateTimeFormatter
沒有區別,所以我將使用第一個。
請看錯誤截圖:
我的猜測是,該錯誤與 Java 9 中引入的關於默認使用 CLDR 語言環境數據的重要更改有關:
在 JDK 9 中,默認語言環境數據使用從 Unicode 聯盟的通用語言環境數據存儲庫 (CLDR) 派生的數據。 因此,用戶可能會看到區域敏感服務行為和/或翻譯的差異。 例如,CLDR 不為大多數 3 字母時區 ID 提供本地化顯示名稱,因此顯示名稱可能與 JDK 8 和更早版本不同。 JDK 繼續提供舊版 JRE 語言環境數據,系統屬性
java.locale.providers
可用於配置查找順序。 要啟用與 JDK 8 兼容的行為,可以使用以下方式設置系統屬性:
-Djava.locale.providers=COMPAT,SPI
有關更多詳細信息,請參閱JEP 252 。
如您所見,如果您提供java.locale.providers
系統屬性的建議值,請注意代碼中的更改,一切運行順利:
所以錯誤可能與對 CLDR 的更改有關,但我錯過了它開始失敗的原因(據了解,它應該是從 Java 9 的第一個版本開始,但它似乎適用於 Java 9.0.1) ,以及為什么它在 Java 11 中也以失敗告終。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.