本文介紹了Java 8:DateTimeParseException的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
基本上,我是在嘗試將字符串解析為時間戳。
public static void main(String[] args) {
System.out.println("Timestamp:" + DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS").parse("20180301050630663"));
}
我收到了一個例外,說
Exception in thread "main" java.time.format.DateTimeParseException: Text '20180301050630663' could not be parsed at index 0
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1947)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1849)
at java.time.LocalDateTime.parse(LocalDateTime.java:492)
at Lob.main(Lob.java:41)
然后我嘗試這樣做:
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");
LocalDateTime timestamp = LocalDateTime.parse("20180301050630663", fmt);
System.out.println("Timestamp:" + timestamp);
,并且也收到相同的異常錯誤。
我在這里做錯了什么?理想情況下,我希望將時間戳存儲到一個變量,并將其與我正在讀入的另一個時間戳進行比較。我如何才能做到這一點?
推薦答案
JDK8的錯誤,已在JDK9中解決:
https://bugs.java.com/view_bug.do?bug_id=JDK-8031085
更新
正如User@Aaron在評論中所說,您可以使用錯誤跟蹤器IMO中包含的解決方法:
public static void main(String[] args) {
DateTimeFormatter dtf = new DateTimeFormatterBuilder().appendPattern("yyyyMMddHHmmss").appendValue(ChronoField.MILLI_OF_SECOND, 3).toFormatter();
System.out.println("Timestamp:" + dtf.parse("20180301050630663"));
}
這篇關于Java 8:DateTimeParseException的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,