与Joda Time DateTime#centuryOfEra()混淆

时间:2016-02-16 12:04:25

标签: java datetime jodatime

我在JodaTime库DateTime类中使用了以下方法,并期望它返回值21.

DateTime#centuryOfEra()

它返回值20让我感到困惑。任何人都可以解释这背后的逻辑吗?

2 个答案:

答案 0 :(得分:3)

根据此官方documentation,字段 centuryOfEra 的最小值为1,但当joda-time使用ISOChronology时,最小值为0。

默认情况下,joda-time使用ISOChronology,因此 centuryOfEra 字段为“从零开始”。

答案 1 :(得分:2)

这取决于您使用的年表。

使用Gregorian/Julian chronology,你的确会进入21世纪。

但是ISOChronology从0开始。

  

除了世纪相关领域,ISOChronology与GregorianChronology完全相同。 在这个年表中,世纪的几个世纪和一年是零基础的。所有年份,世纪是通过放弃一年的最后两位数而忽略标志来确定的。世纪是过去两年数字的值。