Java 8 - Преобразование LocalDate в ZonedDateTime
Я новичок в пакете java.time. У меня есть LocalDate 2015-12-10. Мне нужно преобразовать это в ZonedDateTime. Время должно быть 00:00:00, а Zone - ZoneOffset.UTC.
После преобразования ZonedDateTime должен быть 2015-12-10T00: 00: 00 + 02: 00.
Я сохраняю LocalDate в переменной, называемой startDate.
Я пытался:
ZonedDateTime.ofInstant(Instant.from(startDate), ZoneOffset.UTC)
но получить ошибку
java.time.DateTimeException: невозможно получить мгновенное из TemporalAccessor: 2015-12-10 типа java.time.LocalDate]
Я также пробовал:
startDate.atStartOfDay().atZone(ZoneOffset.UTC)
Это дает неожиданные результаты.
Я просмотрел API и попробовал несколько других методов, но пока не повезло.
Есть ли другой способ конвертировать LocalDate в ZonedDateTime?
Ответы
Ответ 1
При преобразовании менее конкретных объектов в более конкретные, используйте методы "at":
ZonedDateTime zdt = startDate.atStartOfDay(ZoneOffset.UTC);
Однако переход в UTC-смещение не приведет к результату +02: 00, что предполагает, что вы пытаетесь достичь чего-то еще.
Ответ 2
Я полагаю, что проблема больше не актуальна, а для целей 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/