Согласно документации для Instant , минимальное значение Instant * равно -1000000000-01-01T00:00Z
, поэтому год равен -1000000000
, а часовой пояс равен UTC
.поэтому я ожидал, что эта программа будет работать, а atOffset
будет noop:
import java.time.*;
public class A {
public static void main(String[] args) {
Instant i = Instant.MIN;
System.out.println(i);
System.out.println(i.atOffset(ZoneOffset.UTC));
}
}
Но вместо этого он выдает это исключение для atOffset
:
-1000000000-01-01T00:00:00Z
Exception in thread "main" java.time.DateTimeException: Invalid value for Year (valid values -999999999 - 999999999): -1000000000
at java.time.temporal.ValueRange.checkValidIntValue(ValueRange.java:330)
at java.time.temporal.ChronoField.checkValidIntValue(ChronoField.java:722)
at java.time.LocalDate.ofEpochDay(LocalDate.java:341)
at java.time.LocalDateTime.ofEpochSecond(LocalDateTime.java:422)
at java.time.OffsetDateTime.ofInstant(OffsetDateTime.java:328)
at java.time.Instant.atOffset(Instant.java:1195)
at A.main(A.java:7)
Жук?Согласно сообщению этой проверки, минимальный год составляет -999999999
, но в документации говорится, что это -1000000000
.