我正在将正常日期解析为LocalDate formate.While转换我得到一个异常调用。
引起:java.time.format.DateTimeParseException:Text'2017-01-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]
据我所知,我得到了相同的结构。所以在转换时我得到了这个例外。我是正确的。如果我是正确的如何检查输入是否是相同的格式。
这是我的代码: -
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));
答案 0 :(得分: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
答案 1 :(得分:0)
此模式 appendPattern(" dd / MM / yyyy")无法格式化此字符串 2017-01-12 00:00:00.0
改为使用 appendPattern(" yyyy-MM-dd HH:mm.ss.S")