java.time
имеет класс Instant, который инкапсулирует позицию (или "момент" ) на временной шкале. Хотя я понимаю, что это значение секунд/наносекунд, которое напрямую не связано с часовыми поясами или смещениями времени, его toString
возвращает дату и время, отформатированные как дата/время UTC, например, 2014-05-13T20: 05: 08.556Z, Кроме того, anInstant.atZone(zone)
и anInstant.atOffset(offset)
генерируют значение, которое согласуется с обработкой Instant
как подразумеваемого смещения UTC time zone/'zero'.
Я бы ожидал поэтому:
-
ZoneOffset.from(anInstant)
, чтобы создать "нуль"ZoneOffset
-
OffsetDateTime.from(anInstant)
для создания даты/времени с нулевым смещением -
ZoneId.from(anInstant)
(возможно) для создания UTCZoneId
-
ZonedDateTime.from(anInstant)
(возможно) для созданияZonedDateTime
с UTCZoneId
Документация для ZonedDateTime.from
, как я ее прочитал, подтверждает это.
Фактически ZoneOffset.from(anInstant)
терпит неудачу с DateTimeException
, и я полагаю, что по этой причине OffsetDateTime.from(anInstant)
также терпит неудачу, как и другие два.
Является ли это ожидаемым поведением?