1976年3月28日至3月29日与java.util.GregorianCalendar发生了什么?

试图使用GregorianCalendar,在计算特定日期之后的天数时,我陷入了一个奇异点。
在scala翻译中,我输入:

scala>import java.util.GregorianCalendar
scala>import java.util.Calendar
scala>val dateToday = new GregorianCalendar(2012,Calendar.MAY,22).getTimeInMillis()
dateToday: Long = 1337637600000
scala>val days1 = (dateToday - (new GregorianCalendar(1976,Calendar.MARCH,28).getTimeInMillis())) / (1000*3600*24)
days1: Long = 13203
scala>val days2 = (dateToday - (new GregorianCalendar(1976,Calendar.MARCH,29).getTimeInMillis())) / (1000*3600*24)
days2: Long = 13203

我不知道1976年是一个闰年的事实,但是第1天和第2天应该被分开1.这是自1970年以来,这个奇异性发生的唯一的历史时刻。

想知道发生了什么,我计算之前提到的两个日期之间的差异,它给了我只有23个小时的差异!那天发生了什么事?维基百科显然没有说什么。

更重要的是,如何计算自特定日期起的实际天数?

如果浮动部分的选项不可用,我可以想到的最好的答案是在计算两天之间的差距时加上一小时(1000 * 3600):

scala> (dateToday - (new GregorianCalendar(1976, Calendar.MARCH, 28).getTimeInMillis()) + 1000*3600) / (1000 * 3600 * 24)
days1: Long = 13204
scala> (dateToday - (new GregorianCalendar(1976, Calendar.MARCH, 29).getTimeInMillis()) + 1000*3600) / (1000 * 3600 * 24)
days1: Long = 13203

它应该适用于每一个日期,因为你不再遭受闰年了。

http://stackoverflow.com/questions/10698470/what-happened-between-march-28th-and-march-29th-1976-with-the-java-util-gregori

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:1976年3月28日至3月29日与java.util.GregorianCalendar发生了什么?