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: 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 的结果,这表明您正在尝试实现其他目标。
我想这个问题不再相关,但为了 google-目的:
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/
我是 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 的结果,这表明您正在尝试实现其他目标。
我想这个问题不再相关,但为了 google-目的:
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/