簡體   English   中英

Java:無法解析時間字符串

[英]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

您可以使用vz

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM