繁体   English   中英

Java 8 - 将 LocalDate 转换为 ZonedDateTime

[英]Java 8 - Convert LocalDate to ZonedDateTime

我是 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: 无法从 TemporalAccessor 获取 Instant: 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 的结果,这表明您正在尝试实现其他目标。

我认为这个问题不再相关,但出于谷歌的目的:

  LocalDate localDate = LocalDate.parse("2017-07-22");      
  ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.systemDefault());
  // => 2017-07-22T00:00+05:30[Asia/Kolkata]

来源https://beginnersbook.com/2017/10/java-convert-localdate-to-zoneddatetime/

如果您需要将 LocalDate 转换为 ZonedDateTime 与当前时间,您可以使用这个:

LocalDate localDate = LocalDate.parse("2017-07-22"); 
LocalDateTime localDateTime = localDate.atTime(LocalTime.now());
ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.systemDefault())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM