0

以下代码片段非常适用于年份以上的日期1600。但它会给出错误的输出多年等1001, 1500, 1400。你能解释一下为什么吗?

SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy");

XMLGregorianCalendar cal DatatypeFactory.newInstance().newXMLGregorianCalendar("1600-01-01");

String birthDate = format.format(cal.toGregorianCalendar().getTime());

System.out.println(birthDate);
4

3 回答 3

1

我很确定公历日历始于 1582 年,这可以解释为什么它适用于 1600 年而不适用于 1500 年。

于 2013-03-22T10:21:38.223 回答
1

DateFormat 在将 XMLGregorianCalendar 转换为GregorianCalendar后显示“错误”年份的原因是 GregorianCalendar.getGregorianChange() 默认为 1582-10-15。

如果 GregorianCalendar 设置为公历更改日期之前的日期,它实际上将表示儒略历中的日期,这会导致年份看起来“错误”,因为这两个日历的一年长度不同.

对此的修复可能是使用 GregorianCalendar.setGregorianChange() 将此值设置为较早的日期,以避免它更改为儒略历。

于 2013-03-25T13:45:33.933 回答
-1

我不太确定。但我认为它指的是纪元(日期),但是......纪元始于 1970 年(而不是 1960 年)。

公历也有一些限制(我不能提到每一个,但是..),例如,你不能使用“零”年的日期,这不能正确解释(我认为日期超出了 Anno Domini ,而您应该参考在基督之前...我不确定)。

但是...您应该四处寻找“时代”。我希望这有助于找到正确的答案。

于 2013-01-26T22:54:18.787 回答