2017-01-16 49 views
0

我正在解析正常日期到LocalDate formate.While轉換我得到一個異常調用。java.time.format.DateTimeParseException

所致:java.time.format.DateTimeParseException:文本 '2017年1月12日 00:00:00.0' 不能在索引2處 java.time.format.DateTimeFormatter.parseResolved0(被解析DateTimeFormatter.java:1949) [rt.jar:1.8.0_111] at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851) [rt.jar:1.8.0_111] java.time.LocalDate .parse(LocalDate.java:400) [rt.jar中:1.8.0_111]

正如我知道我得到相同formate.So而轉換我正在噸他的例外,我正確。如果我是正確的如何檢查輸入是否是相同的格式。

這是我的代碼: -

 DateTimeFormatter DATE_FORMAT = new DateTimeFormatterBuilder().appendPattern("dd/MM/yyyy").toFormatter(); 
     LocalDate localDate = LocalDate.parse(myClass.getDate, DATE_FORMAT); 
     System.out.println(localDate.format(DATE_FORMAT)); 

回答

2

模式 「DD/MM/YYYY」 不符合您的輸入。代替使用圖案

「uuuu-MM-dd HH:mm:ss.S」。同樣重要的是:您不應該將這樣的輸入解析爲LocalDate,因爲您的輸入也具有時間信息。更適合的類型是LocalDateTime。完整的例子使得給定的輸入之間的差(由異常所指示的)和希望輸出:

DateTimeFormatter DATE_FORMAT = 
    new DateTimeFormatterBuilder().appendPattern("uuuu-MM-dd HH:mm:ss.S").toFormatter(); 
LocalDateTime ldt = LocalDateTime.parse("2017-01-12 00:00:00.0", DATE_FORMAT); 
System.out.println(ldt); // 2017-01-12T00:00 

System.out.println(ldt.format(DateTimeFormatter.ofPattern("dd/MM/yyyy"))); // 12/01/2017 
+0

其實在第一次保存沒有問題,同時更新它拋出這種異常 – ravi

+0

我得到的確切輸入是07/01/2017 – ravi

+0

@ravi不,「07/01/2017」如果我們按照上面提到的堆棧跟蹤,不能成爲您的parse-routine的輸入。 –

0

此圖案appendPattern(「DD/MM/YYYY」)不能格式化該字符串 2017-01 -12 00:00:00.0

改用appendPattern( 「YYYY-MM-DD HH:mm.ss.S」)

相關問題