我使用的是 Java8的新 DateTimeAPI。
如何将 LocalDate 转换为 Instant? 我有个例外
LocalDate date = LocalDate.of(2012, 2, 2); Instant instant = Instant.from(date);
我不明白为什么。
为了将其转换为即时,您需要一个 LocalDateTime 实例,例如:
LocalDate.now().atStartOfDay().toInstant(ZoneOffset.UTC)
Instant类表示时间线上的一个瞬时点。与 LocalDate的转换需要时区。与其他一些日期和时间库不同,JSR-310不会自动为您选择时区,因此您必须提供它。
Instant
LocalDate
LocalDate date = LocalDate.now(); Instant instant = date.atStartOfDay(ZoneId.systemDefault()).toInstant();
此示例使用 JVM-ZoneId.systemDefault()的默认时区来执行转换。这里有一个相关问题的 更长的答案。
ZoneId.systemDefault()
更新: 接受的答案使用 LocalDateTime::toInstant(ZoneOffset),它只接受 ZoneOffset。这个答案使用 LocalDate::atStartOfDay(ZoneId),它接受任何 ZoneId。因此,这个答案通常更有用(也许应该是可以接受的答案)。
LocalDateTime::toInstant(ZoneOffset)
ZoneOffset
LocalDate::atStartOfDay(ZoneId)
ZoneId
另外,我是 API 的主要作者