Java 8 - 将 LocalDate 转换为 OffsetDateTime

我想知道是否可以在Java 8中从LocalDate转换为OffsetDateTime。

例如,假设我得到了这个LocalDate:

1992-12-28

然后我想把它转换成这个:OffsetDateTime

1992-12-28T00:00-03:00

假设我们知道时区,例如美国/圣地亚哥。


答案 1

你可以试试这个..

OffsetDateTime o = OffsetDateTime.of(LocalDate.now(),LocalTime.NOON, ZoneOffset.UTC);
OffsetDateTime o1 = OffsetDateTime.of(LocalDateTime.now(), ZoneOffset.UTC);

答案 2

我在你的问题中自由编辑了一些假设。恕我直言,一些合理的,但你应该检查一下。如果那里有问题,请更正。在这些假设下,正确的转换是:

    ZoneId zone = ZoneId.of("Europe/Madrid");
    LocalDate date = LocalDate.of(2019, Month.JULY, 27);
    OffsetDateTime odt = date.atStartOfDay(zone)
            .toOffsetDateTime();
    System.out.println(odt);

输出:

2019-07-27T00:00+02:00

Java 知道夏令时 (DST),并在考虑夏令时的情况下找到时区的正确偏移量。我调用的方法产生一个 ,即带有时区的日期和时间。它有一个转换为您要求的方法。atStartOfDayZonedDateTimetoOffsetDateTimeOffsetDateTime