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