【发布时间】:2016-06-07 06:30:06
【问题描述】:
考虑一个代码:
TemporalAccessor date = DateTimeFormatter.ofPattern("yyyy-MM-dd").parse("9999-12-31");
Instant.from(date);
最后一行抛出异常:
Unable to obtain Instant from TemporalAccessor: {},ISO resolved to 9999-12-31 of type java.time.format.Parsed
如何从yyyy-MM-dd 模式创建Instant?
【问题讨论】:
-
首先我会尝试比 9999 低一年;D 例如在 2016 年尝试。
-
使用 LocalDate.parse(),通过选择时间(atStartOfDay?)将其转换为 LocalDateTime,通过选择时区将其转换为 ZonedDateTime(日期是否代表法国的瞬间?在英国?在日本?),然后将 ZonedDateTime 转换为 Instant。
-
瞬间就是瞬间。 31-12-9999 是一个日期,而不是一个瞬间。因此,如果您只需要日期,您可以将其解析为 LocalDate,或者您必须指定丢失的位(时间 + 区域偏移量或时区)。