【问题标题】:LocalDateTime.parse(yyyMMddHHmmssSSS, DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS") error [duplicate]LocalDateTime.parse(yyyMMddHHmmssSSS,DateTimeFormatter.ofPattern(“yyyyMMddHHmmssSSS”)错误[重复]
【发布时间】:2021-11-20 06:40:44
【问题描述】:

为什么它不起作用? ... 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 milliseconds localdatetime datetimeformatter


    【解决方案1】:

    错误,已在 Java 9+ 中修复

    根据 cmets,此类代码似乎在 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 ) ;
    

    在 Java 12 中运行时,如 on IdeOne.com 所示。

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

    【讨论】:

    • 谢谢!我的 Java 版本是 1.8.0_301。它在 1.8.0_51 版本中运行良好。你可以在这里看到 => (ideone.com/G6P3Yg) 但是当它在 1.8.0_66 中运行时出现错误,你可以在这里看到 => (jdoodle.com/ia/jW2) 谢谢 Basil Bourque。
    • @LindaLee Java 8 的当前版本是 312。
    猜你喜欢
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 2016-09-07
    • 1970-01-01
    • 2011-07-28
    • 2019-11-29
    相关资源
    最近更新 更多