在java.util.Date
中,我看到了以下代码。
private static final BaseCalendar getCalendarSystem(int year) {
if (year >= 1582) {
return gcal;
}
return getJulianCalendar();
}
这是什么意思?我有这个问题ClassCastException when comparing Dates?
答案 0 :(得分:5)
这意味着在1582年由教皇格雷戈里进行了日历改革。在此日期之前 - 朱利安日历,之后 - 格里高利。
在Julian日历中,如果它的数字可以除以4,我们就有一个闰年。 在格里高利 - 如果它的数字可以除以4,减去这些年份可以除以100加上可以除以400的数字。
更多here
如果这个规则有数百个会重复数千个,那么可以制作更精确的日历,但是没有完成,并且最终日历将收集对实际年度周期的如此大的错误,需要进行新的改革。但这是数千年的问题 - 在一千年里,每天损失3/4。
显然,这就是他们开始新日历的原因,因为只有格里高利和朱利安日历之间的差异,因此应该少修正一天。在第二个千年期间,我们将失去更多的一天......现在,春分点在3月20-21更频繁地发生,而不是在400年前的21-22。
答案 1 :(得分:0)
当前使用的日历是公历。它是在1582年引入的,用于修复上一个(朱利安)日历中年份长度的问题。
因此,将GregorialCalendar
类用于1582之前的日期是错误的,而Java将隐式使用类JulianCalendar
。