LocalDateTime.parse(yyyMMddHHmmssSSS, DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS") 错误

LocalDateTime.parse(yyyMMddHHmmssSSS, DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS") error

为什么不起作用? ... 1) 有效,但 2) 发生 DateTimeParseException。

#1

DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyyMMddHHmmss.SSS");
LocalDateTime dt1 = LocalDateTime.parse("20211211134321.221", formatter1);

#2

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");
LocalDateTime dt = LocalDateTime.parse("20211211134321221", formatter);

错误,已在 Java 9+

中修复

根据评论,似乎这样的代码 运行 在 Java 8 的某些早期版本中成功,但在 Java 8 的其他较新版本中失败。

显然是由于错误 JDK-8031085,已在 Java 9+ 中修复。


这是我重新格式化后的代码版本。

DateTimeFormatter fx = DateTimeFormatter.ofPattern( "yyyyMMddHHmmss.SSS" ); 
LocalDateTime x = LocalDateTime.parse( "20211211134321.221" , fx );
System.out.println( "x = " + x ) ;

DateTimeFormatter fy = DateTimeFormatter.ofPattern( "yyyyMMddHHmmssSSS" ); 
LocalDateTime y = LocalDateTime.parse( "20211211134321221" , fy );
System.out.println( "y = " + y ) ;

当运行在Java12时,如on IdeOne.com.

x = 2021-12-11T13:43:21.221
y = 2021-12-11T13:43:21.221