设置1582年10月14日在java.sql.Date中失败

时间:2016-02-04 07:02:57

标签: java date

如果我尝试将java.sql.Date设置为 新的java.sql.Date(1582-1900,09,14) 它让我回头

1582-10-24

所以相差10天。如何解决这个问题?

2 个答案:

答案 0 :(得分:8)

你确定日期存在吗?

Wikipedia says格里高利日历(这是你可能正在使用的日历)于1582年10月15日开始。

  

当新日历投入使用时,自尼西亚议会以来13个世纪以来累积的错误被删除了10天。朱利安历日在1582年10月4日星期四之后是格里高利历的第一天,即1582年10月15日星期五(工作日的周期没有受到影响)。

如果您需要在此前几天处理,您可能需要编写一些更复杂的代码。

答案 1 :(得分:4)

这是由于当年日历从Julian切换到Gregorian。 (后者有朱利安历法所缺少的100和400闰年修正。这说明了累积的10天差异。)

请注意,一些国家 - 特别是英格兰 - 直到1752年才采用该日历。例如,俄罗斯直到20世纪才采用它!

根据经验,如果您在1752年之前使用日期,那么您应该咨询历史学家。