Java 8 - 将 LocalDate 转换为 ZonedDateTime

标签 java java-8 java-time

我是 java.time 包的新手。我有一个 LocalDate 2015-12-10。我需要将其转换为 ZonedDateTime。时间应为 00:00:00,区域为 ZoneOffset.UTC。

转换后 ZonedDateTime 应该是 2015-12-10T00:00:00+02:00。

我将 LocalDate 存储在一个名为 startDate 的变量中。

我试过了:

ZonedDateTime.ofInstant(Instant.from(startDate), ZoneOffset.UTC)

但得到错误

java.time.DateTimeException: Unable to obtain Instant from TemporalAccessor: 2015-12-10 of type java.time.LocalDate]

我也试过了:

startDate.atStartOfDay().atZone(ZoneOffset.UTC)

这会产生意想不到的结果。

我查看了 API 并尝试了其他一些方法,但到目前为止都没有运气。

有没有其他方法可以将 LocalDate 转换为 ZonedDateTime?

最佳答案

将不太具体的对象转换为更具体的对象时,请使用“at”方法:

ZonedDateTime zdt = startDate.atStartOfDay(ZoneOffset.UTC);

但是,传入 UTC 偏移量不会得到 +02:00 的结果,这表明您正在尝试实现其他目标。

关于Java 8 - 将 LocalDate 转换为 ZonedDateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32001716/

相关文章:

JavaCV将3 channel IplImage转换为4 channel IplImage

spring - 使用 Spring Boot >= 2.0.1.RELEASE 将 ZonedDateTime 保存到 MongoDB 时出现 CodecConfigurationException

java 8 - 有没有一种从 map 中过滤和删除的好方法?

带状态的 Java Streams - 一个简单的练习

java - 我们如何处理 java 流中的异常

我的程序出现 java.time.LocalDateTime 错误

时区偏移量的 java.time DateTimeFormatter 模式

java - 如何在 Java 中压缩 jpeg 图像而不丢失该图像中的任何元数据?

java - ExecutorService和ForkJoinPool

java - Hibernate:必须在调用 save() 之前手动分配此类的 id