新日期 API - 添加纪元
New Date API - Add Era
我正在玩新日期 API,出于好奇,我尝试 运行 以下代码:
LocalDateTime timePoint = LocalDateTime.now(ZoneId.of("Australia/Canberra"));
System.err.println(timePoint.plus(1, ChronoUnit.ERAS));
并出现以下错误:
Exception in thread "main" java.time.DateTimeException: Invalid value for Era (valid values 0 - 1): 2
at java.time.temporal.ValueRange.checkValidValue(ValueRange.java:311)
at java.time.temporal.ChronoField.checkValidValue(ChronoField.java:703)
at java.time.LocalDate.with(LocalDate.java:1023)
at java.time.LocalDate.plus(LocalDate.java:1245)
at java.time.LocalDateTime.plus(LocalDateTime.java:1194)
at pt.sibs.epms.Tester.method6(Tester.java:79)
at pt.sibs.epms.Tester.main(Tester.java:59)
这是一个错误还是我没有正确使用它?
您正在调用的 plus
方法的
Throws: DateTimeException
if the addition cannot be made
您使用的是标准 ISO 年表,它使用 IsoEra
。 ISO 年表有两个纪元:
- BCE = 当前纪元之前(0 年之前)
- CE = 当前纪元(从 0 年开始)
如果你有一个在 CE 中的日期并且你试图进入下一个时代,你会得到一个 DateTimeException
因为没有下一个时代,所以无法进行添加并且例外是抛出,这是根据文档,所以这不是一个错误。
我正在玩新日期 API,出于好奇,我尝试 运行 以下代码:
LocalDateTime timePoint = LocalDateTime.now(ZoneId.of("Australia/Canberra"));
System.err.println(timePoint.plus(1, ChronoUnit.ERAS));
并出现以下错误:
Exception in thread "main" java.time.DateTimeException: Invalid value for Era (valid values 0 - 1): 2
at java.time.temporal.ValueRange.checkValidValue(ValueRange.java:311)
at java.time.temporal.ChronoField.checkValidValue(ChronoField.java:703)
at java.time.LocalDate.with(LocalDate.java:1023)
at java.time.LocalDate.plus(LocalDate.java:1245)
at java.time.LocalDateTime.plus(LocalDateTime.java:1194)
at pt.sibs.epms.Tester.method6(Tester.java:79)
at pt.sibs.epms.Tester.main(Tester.java:59)
这是一个错误还是我没有正确使用它?
plus
方法的
Throws:
DateTimeException
if the addition cannot be made
您使用的是标准 ISO 年表,它使用 IsoEra
。 ISO 年表有两个纪元:
- BCE = 当前纪元之前(0 年之前)
- CE = 当前纪元(从 0 年开始)
如果你有一个在 CE 中的日期并且你试图进入下一个时代,你会得到一个 DateTimeException
因为没有下一个时代,所以无法进行添加并且例外是抛出,这是根据文档,所以这不是一个错误。