新的日期API - 添加时代

时间:2016-05-30 11:30:28

标签: java java-time

我正在玩新的Date 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)

这是一个错误还是我没有正确使用它?

1 个答案:

答案 0 :(得分:1)

您呼叫的plus方法的

The documentation表示:

  

如果无法添加,则抛出:DateTimeException

您使用的是标准ISO年表,它使用IsoEra。 ISO年表有两个时代:

  • BCE =当前时代之前(0年之前)
  • CE =当前时代(从0年开始)

如果你有一个在CE中的日期并且你试图进入下一个时代,那么你得到一个DateTimeException,因为没有下一个时代,所以无法进行添加并抛出异常,这是根据文档,所以这不是一个错误。