[英]DateTimeParseException on 'z' (time-zone name) when using DateTimeFormatter
使用 OpenJDK 11.0.3,當我想用時區格式化日期時,我收到以下錯誤:
String pattern = "EEE MMM dd HH:mm:ss z yyyy";
String dateStr = "Thu Jan 01 01:00:00 CET 1970";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern, Locale.ENGLISH);
LocalDate date = LocalDate.parse(dateStr, formatter);
java.time.format.DateTimeParseException: Text 'Thu Jan 01 01:00:00 CET 1970' could not be parsed: null
at java.base/java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:2017)
at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1952)
at java.base/java.time.LocalDate.parse(LocalDate.java:428)
...
Caused by: java.lang.NullPointerException
at java.base/java.time.format.DateTimeFormatterBuilder$PrefixTree.prefixLength(DateTimeFormatterBuilder.java:4527)
at java.base/java.time.format.DateTimeFormatterBuilder$PrefixTree.add0(DateTimeFormatterBuilder.java:4396)
at java.base/java.time.format.DateTimeFormatterBuilder$PrefixTree.add(DateTimeFormatterBuilder.java:4391)
...
當我省略時區名稱( z
)時,一切正常:
String pattern = "EEE MMM dd HH:mm:ss yyyy";
String dateStr = "Thu Jan 01 01:00:00 1970";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern, Locale.ENGLISH);
LocalDate date = LocalDate.parse(dateStr, formatter);
date ==> 1970-01-01
這個版本好像有bug。
使用 OpenJDK 11.0.11 版時,一切正常:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
"EEE MMM dd HH:mm:ss z yyyy",
Locale.ENGLISH
);
LocalDate date = LocalDate.parse("Thu Jan 01 01:00:00 CET 1970", formatter);
date ==> 1970-01-01
不幸的是,我在互聯網上找不到與此問題相關的任何內容,因此我無法真正說明為什么在舊版本中會發生這種情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.