[英]Java:failed to parse time string
我試圖使用以下代碼解析以下時間字符串20180904-23:15:00.000 CST
DateTimeFormatter abcDateFmt = DateTimeFormatter.ofPattern("yyyyMMdd-HH:mm:ss.SSS [XXX]");
LocalDateTime abcTimestamp = LocalDateTime.parse("20180904-23:15:00.000 CST", abcDateFmt );
然后我遇到了這個例外。
Exception in thread "main" java.time.format.DateTimeParseException: Text '20180904-23:15:00.000 CST' could not be parsed, unparsed text found at index 22
at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2049)
at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1948)
at java.base/java.time.LocalDateTime.parse(LocalDateTime.java:492)
我應該如何解決這個問題?
您使用了錯誤的圖案符號X,該符號X表示偏移量,而不是區域名稱的縮寫。 參見javadoc :
z time-zone name zone-name Pacific Standard Time; PST
X zone-offset 'Z' for zero offset-X Z; -08; -0830; -08:30; -083015; -08:30:15
建議:使用模式字母“ z”。 順便說一句:@Ricola的另一個答案中所示的“ v”表示通用區域名稱,如果這是標准時間或白天,則沒有任何提示,但是您的縮寫“ CST”寧可將符號“ z”表示為正確的符號。
我還想知道為什么在解析后通過選擇類型LocalDateTime
而不是ZonedDateTime
丟棄了區域信息(可以在下一步ZonedDateTime
其轉換為即時信息)。
DateTimeFormatter abcDateFmt = DateTimeFormatter.ofPattern("yyyyMMdd-HH:mm:ss.SSS [v]");
LocalDateTime abcTimestamp = LocalDateTime.parse("20180904-23:15:00.000 CST", abcDateFmt );
從javadoc :
X zone-offset 'Z' for zero offset-X Z; -08; -0830; -08:30;
v generic time-zone name zone-name Pacific Time; PT
z time-zone name zone-name Pacific Standard Time; PST
您可以使用v
或z
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.