Что произошло между 28 и 29 марта 1976 года с 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 часа разницы! Что произошло в тот день? Википедия, видимо, ничего не говорит об этом.

И, что еще более важно, как вычислить реальное количество дней, прошедших с определенной даты?

20
задан Mikaël Mayer 22 May 2012 в 08:49
поделиться