Я новичок в пакете java.time. У меня есть LocalDate 2015-12-10. Мне нужно преобразовать это в ZonedDateTime. Время должно быть 00:00:00, а Zone - ZoneOffset.UTC.Java 8 - Преобразование LocalDate в ZonedDateTime
После преобразования 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?
Почему вы ожидаете, что смещение зоны будет +02: 00? – Misha
Если вы хотите использовать ZonedDateTime, вам потребуется ZoneId. Не только ZoneOffset. И ваш вопрос не имеет большого смысла. Сначала вы говорите, что хотите его в часовой пояс UTC, а затем вы говорите, что это должно быть 2015-12-10T00: 00: 00 + 02: 00. Если это +02: 00, это не UTC. UTC +00: 00. Если вам нужно время с фиксированным смещением UTC, вы должны использовать OffsetDateTime: 'OffsetDateTime offsetDateTimeDateTime = date.atStartOfDay(). AtOffset (ZoneOffset.ofHours (2));' –
Мои извинения: ZoneOffset расширяет ZoneId, поэтому который вернет вам ZonedDateTime. Остальная часть моего комментария все еще стоит. –