【问题标题】:could not be parsed: Unable to obtain OffsetDateTime from TemporalAccessor: [duplicate]无法解析:无法从 TemporalAccessor 获取 OffsetDateTime:[重复]
【发布时间】:2026-01-11 11:45:02
【问题描述】:

我有这段代码:

public static final String DATE_PATTERN = "yyyy-MM-dd";

    OffsetDateTime.parse(startTime, DateTimeFormatter.ofPattern(DateFormat.DATE_PATTERN)

但是我在解析的时候出现这个错误:

java.time.format.DateTimeParseException: Text '2019-07-10' could not be parsed: Unable to obtain OffsetDateTime from TemporalAccessor: {},ISO resolved to 2019-07-10 of type java.time.format.Parsed

【问题讨论】:

  • 对于OffSetDateTime,我认为您需要偏移量。这更像是LocalDate

标签: java date datetime java-8 format


【解决方案1】:

ZonedDateTime

具有 ISO-8601 日历系统中时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris。

LocalDate

ISO-8601 日历系统中没有时区的日期,例如 2007-12-03。

因为你的字符串只代表简单的日期,所以使用LocalDate

LocalDate date = LocalDate.parse(startTime, DateTimeFormatter.ISO_DATE);

【讨论】:

    【解决方案2】:

    问题是这些解析方法需要偏移字符串部分(+/-hh:mm),如果你想使用OffsetDateTime你需要添加那个部分,这里有一些例子:

    OffsetDateTime date = OffsetDateTime.parse("2016-10-02T20:15:30+01:00",
                    DateTimeFormatter.ISO_DATE_TIME);
    

    如果你只想要那种格式,“yyyy-mm-dd”,你只需要使用传统的LocalDate.parse

    【讨论】: