为什么这个日期解析失败了?

use*_*113 13 java datetime datetime-parsing java-time

我正在尝试将字符串转换为LocalDateTime对象.

@Test
public void testDateFormat() {
   String date = "20171205014657111";
   DateTimeFormatter formatter = 
       DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");
   LocalDateTime dt = LocalDateTime.parse(date, formatter);
}
Run Code Online (Sandbox Code Playgroud)

我希望这个测试能够通过.

我收到以下错误:

java.time.format.DateTimeParseException:无法在索引0处解析文本'20171205014657111'

use*_*113 17

看起来我可能遇到过这个错误:https://bugs.openjdk.java.net/browse/JDK-8031085,因为它对应于我正在使用的JVM版本.评论中的解决方法为我解决了这个问题:

@Test
public void testDateFormat() {
    String date = "20171205014657111";
    DateTimeFormatter dtf = new DateTimeFormatterBuilder()
       .appendPattern("yyyyMMddHHmmss")
       .appendValue(ChronoField.MILLI_OF_SECOND, 3).toFormatter();
    LocalDateTime dt = LocalDateTime.parse(date, dtf);
}
Run Code Online (Sandbox Code Playgroud)

  • 哦,哇,这太令人失望了.我想知道为什么他们将它推迟到9,而不是在下一个版本的8中修复它. (2认同)