如何将本地日期转换为即时日期



我使用Java 8的新DateTime API。

如何将本地日期转换为即时日期?我得到一个例外

LocalDate date = LocalDate.of(2012, 2, 2);
Instant instant = Instant.from(date);

我不明白为什么。

Instant类表示时间线上的瞬时点。与LocalDate之间的转换需要时区。与其他一些日期和时间库不同,JSR-310 不会自动为您选择时区,因此您必须提供时区。

LocalDate date = LocalDate.now();
Instant instant = date.atStartOfDay(ZoneId.systemDefault()).toInstant();

此示例使用 JVM 的缺省时区 - ZoneId.systemDefault() - 来执行转换。有关相关问题的更长答案,请参阅此处。


更新:接受的答案使用仅接受ZoneOffsetLocalDateTime::toInstant(ZoneOffset)。此答案使用接受任何ZoneIdLocalDate::atStartOfDay(ZoneId)。因此,这个答案通常更有用(并且可能应该是公认的答案(。

附言。我是API的主要作者

为了将其转换为即时,您需要有一个 LocalDateTime 实例,例如:

LocalDate.now().atStartOfDay().toInstant(ZoneOffset.UTC)

使用它,我能够获取本地日期时间实例:

LocalDateTime.now().toInstant(ZoneOffset.UTC)

相关内容

  • 没有找到相关文章

最新更新