【问题标题】:Why does this date parsing fail? [duplicate]为什么这个日期解析失败? [复制]
【发布时间】:2018-05-18 14:36:03
【问题描述】:

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

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

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

我收到以下错误:

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

【问题讨论】:

  • 在我的机器上运行良好:dt = 2017-12-05T01:46:57.111
  • @alfasin 你运行的是哪个 jvm 版本?
  • 在这里工作正常。你在哪个时区?
  • 时区不应该有所作为 - 它是 LocalDateTime。
  • @user4184113 Java 9+181

标签: java datetime java-time datetime-parsing


【解决方案1】:

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

@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);
}

【讨论】:

  • 哦,哇,真令人失望。我想知道他们为什么将它推迟到 9,而不是在下一个版本的 8 中修复它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-30
  • 2016-08-27
  • 2018-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多