【问题标题】:not able to convert String "rejectedDate":"2018-03-29" to ZoneDate time format无法将字符串 "rejected Date":"2018-03-29" 转换为 ZoneDdatetime 格式
【发布时间】:2018-04-05 12:46:17
【问题描述】:

java.time.format.DateTimeParseException:文本'2018-03-29 16:15:30' 无法在索引 10 处解析

 DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");
                        OffsetDateTime date = 
 OffsetDateTime.parse(entry.getValue(), fmt);
                        predicates.add(cb.equal(root.get(entry.getKey()), date));

【问题讨论】:

  • OffsetDateTime javadoc 说:在 ISO-8601 日历系统中与 UTC/格林威治有偏移的日期时间,例如 2007-12-03T10:15:30+01:00。难道你的日期时间格式化程序不包括时区和日期时间?
  • 这是一个正常的例外,因为您的文本与您的模式不匹配。用这种格式解析的时间数据只有足够的数据来构造一个LocalDate。 OffsetDateTime 还需要LocalTimeZoneOffset,它们都缺失了。您在这里的用例是什么?

标签: java datetime java-8 datetime-parsing


【解决方案1】:

您使用“yyyy-MM-dd”(年-月-日)模式创建了一个DateTimeFormatter,但您的输入还包含“小时:分钟:秒”(2018-03-29 16:15:30)。

但是即使你使用正确的模式,这仍然会抛出异常:

// now the pattern matches the input
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
OffsetDateTime date = OffsetDateTime.parse("2018-03-29 16:15:30", fmt); // DateTimeParseException

这是因为 OffsetDateTime 也需要 UTC 偏移量,而输入没有它。你有一些选择:

  1. 将其解析为LocalDateTime:

    DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    LocalDateTime date = LocalDateTime.parse("2018-03-29 16:15:30", fmt);
    
  2. 如果你真的需要OffsetDateTime,你将不得不为它任意选择一些偏移量。示例:

    LocalDateTime date = // parse the LocalDateTime as above
    
    // use offset +02:00
    OffsetDateTime odt = date.atOffset(ZoneOffset.ofHours(2));
    

或者你可以在格式化程序中设置一个默认值:

DateTimeFormatter fmt = new DateTimeFormatterBuilder()
    // date/time pattern
    .appendPattern("yyyy-MM-dd HH:mm:ss")
    // use some offset as default (0 is UTC)
    .parseDefaulting(ChronoField.OFFSET_SECONDS, 0)
    .toFormatter();
OffsetDateTime odt = OffsetDateTime.parse("2018-03-29 16:15:30", fmt);

【讨论】:

  • 抱歉回复晚了 是的,通过输入它能够解析的区域 ID。谢谢
猜你喜欢
  • 1970-01-01
  • 2020-07-30
  • 2019-06-06
  • 1970-01-01
  • 2023-04-04
  • 2018-10-11
  • 2013-12-08
  • 2017-05-31
相关资源
最近更新 更多