LocalDate.ofEpochDay(ChronoField.EPOCH_DAY.range().getMinimum());上面的代碼以拋出以下堆棧跟蹤結束:java.time.DateTimeException: Invalid value for Year (valid values -999999999 - 999999999): -1000018564 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)我不明白為什么這個指令不受支持。實際上,java-time 策略是查詢自己的 Temporal 以ValueRange獲取一個TemporalFieldthroughrange (TemporalField)方法。并且,對于這種情況LocalDate,不會更改 EpochDay 字段的默認范圍。@Overridepublic ValueRange range(TemporalField field) { if (field instanceof ChronoField) { ChronoField f = (ChronoField) field; if (f.isDateBased()) { switch (f) { case DAY_OF_MONTH: return ValueRange.of(1, lengthOfMonth()); case DAY_OF_YEAR: return ValueRange.of(1, lengthOfYear()); case ALIGNED_WEEK_OF_MONTH: return ValueRange.of(1, getMonth() == Month.FEBRUARY && isLeapYear() == false ? 4 : 5); case YEAR_OF_ERA: return (getYear() <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE)); } return field.range(); } throw new UnsupportedTemporalTypeException("Unsupported field: " + field); } return field.rangeRefinedBy(this);}EpochDay 字段有效值應該可轉(zhuǎn)換為LocalDate,否則為什么它在范圍內(nèi)?Instant和INSTANT_SECONDS字段也會發(fā)生同樣的情況:Instant.ofEpochSecond(ChronoField.INSTANT_SECONDS.rangeRefinedBy(Instant.now()).getMinimum());有人能幫助我嗎?
添加回答
舉報
0/150
提交
取消