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