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) также терпит неудачу, как и другие два.
Является ли это ожидаемым поведением?