【发布时间】:2021-01-10 15:49:05
【问题描述】:
尝试从日期字符串解析 ZonedDateTime,例如“2020-08-24”。
在使用 TemporalAccesor 和 DateTimeFormatter.ISO_OFFSET_DATE 进行解析时,我得到一个 java.time.format.DateTimeParseException。我是否使用了错误的格式化程序?
甚至尝试在日期字符串的末尾添加“Z”以便将其理解为 UTC
private ZonedDateTime getZonedDateTime(String dateString) {
TemporalAccessor parsed = null;
dateString = dateString + 'Z';
try {
parsed = DateTimeFormatter.ISO_OFFSET_DATE.parse(dateString);
} catch (Exception e) {
log.error("Unable to parse date {} using formatter DateTimeFormatter.ISO_INSTANT", dateString);
}
return ZonedDateTime.from(parsed);
}
【问题讨论】:
-
yyyy-mm-dd与LocalDate中存储的信息完全相同。要拥有ZoneDateTime,您需要时间组件和一些您似乎没有的区域信息。为什么要将其解析为ZonedDateTime? -
确实,即使您最终想要 ZonedDateTime,我认为如果您将其解析为 LocalDate 然后通过提供时间将其转换为 ZonedDateTime,期望会更清晰日期和时区。
标签: java date-format java-time zoneddatetime datetimeformatter