這在Java 11中可以使用,但在Java 17中不能使用
。DateTimeFormatter format = DateTimeFormatter. ofPattern("MMM dd, yyyy")
.withLocale(Locale.UK)。
format.parse("Sep 29, 1988")。
Java 17堆疊跟蹤:
執行緒"main"java.time.format.DateTimeParseException中出現例外。文本'Sep 29, 1988'無法在索引0處被決議。
at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2052)
at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1880)
我的Java版本:
openjdk version "17" 2021-09-14 LTS
OpenJDK運行時環境Zulu17.28 13-CA(構建17 35LTS)。
OpenJDK 64-Bit Server VM Zulu17.28 13-CA(構建17 35-LTS,混合模式,共享)。
有什么變化?
uj5u.com熱心網友回復:
似乎是在en_GB地區,九月的簡稱現在是 "Sept",而不是 "Sep"。所有其他的月份都是與en_US相同的3個字母的縮寫。這是有道理的。作為一個英國人,"Sep "在我看來是錯誤的。
這就是門票。https://bugs.openjdk.java.net/browse/JDK-8251317
這并不是 JDK 作者有意識的決定。Java 中默認使用的語言資料來自 Common Locale Data Repository (CLDR),這是 Unicode Consortium 的一個專案。新版本的Java帶有較新版本的CLDR。因此,您可能偶爾會看到區域碼行為的變化。因此,你遇到的變化是一個功能,而不是一個錯誤。
你的變化只是許多小調整中的一個。
以下是 PR 中的具體變化,它為你帶來了麻煩。 https://github.com/openjdk/jdk/pull/1279/files#diff-97210acd6f77c4f4979c43445d60ba1c369f058230e41177dceca697800b1fa2R116
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/328386.html
標籤:
上一篇:如何將字串決議為更可行的鍵值?
下一篇:需要在C#中把simpledateformat(EEEMMMdHH:mm:sszyyyy)轉換成DateTime。
