我正在尝试使用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年是闰年是否有影响,但days1和days2应该相差1天。这是自1970年以来唯一发生这种情况的时刻。
想知道发生了什么,我计算了先前提到的两个日期之间的差异,结果只有23小时的差异!那天发生了什么?维基百科显然没有提到任何关于它的内容。
更重要的是,如何计算自特定日期以来的实际天数?
dateToday
定义为一个def
,否则随着实验的进行,偏移量会变得越来越奇怪。 - DebilskidateToday
重命名为dateWhereIFoundTheBigDateBug
。 - Mikaël Mayer