Старый новый
Меня удивляет, что некоторые люди не знают что такое «Старый Новый год». Нет, я не про существование самого праздника, а про то как он появился. Я об этом узнал ещё в школе, на уроках истории, и хотя историю я не любил, тем не менее, этот факт запомнил, правда тогда мне рассказали о нём в весьма упрощённой трактовке.
Все знают, что год у нас равен 365 и 366 дням, в зависимости от високосности. В високосный год в феврале есть 29-й день, который корректирует накопившуюся ошибку, так как проложительность года на самом деле не кратна суткам.
Ещё есть високосная секунда, о чём знают горазно меньше людей, но обязаны знать программисты, так как время от времени в минуте бывает 61 секунда. Например, через четыре дня, 30 июня, на часах, которые смогут это показать, будет 23:59:60.
В общем, когда-то, ещё до революции был у нас так называемый юлианский календарь, где год равнялся 365,25 дням. Т. е. каждые четыре года вводился дополнительный день, но оказалось, что этой поправки недостаточно и за сотни лет накопилась солидная ошибка.
Поэтому ему на смену пришёл более точный григорианский календарь, где год составляет 365,2425 суток, а накопившуюся ошибку просто добавили к текущей дате в момент перехода. Даты после принятия григорианского календаря называют «по новому стилю», до — «по старому стилю».
Каждые 128 лет в прежнем календаре накапливалась ошибка в один день. В России переход состоялся в 1918 году и накопившаяся ошибка составила 13 дней, после 31 января в этом году шло сразу 14 февраля, в этот момент и родился «Старый Новый год», который отмечается до сих пор, тем более, что РПЦ новый календарь не приняла и продолжает встречать все праздники по старому календарю.
Для меня в этой истории важно следующее.
Когда я занялся историей своей семьи, быстро столкнулся с датами «по старому стилю». Например, мой прадед Феодор Николаевич Старостин родился 9 августа по старому стилю, что соответствует 22 числу по новому. А вот что было для меня новостью (и что мне не рассказали в школе), что разница между старым и новым стилем не постоянна.
Вообще, это логично, конечно, если об этом задуматься — ведь ошибка копилась со временем. Например, даты от 29 февраля 1900 года до 1 марта 1800 года сдвигаются уже на 12 дней (в Википедии есть табличка). То есть даты рождения моего прапрадеда, Николая Феодоровича Старостина (1870 год) или его супруги, Анастасии (Юстины) Евдокимовны Меркуловой (1873) нужно сдвинуть на 12 дней.
Наверное все-таки 14 января
Комментарий для drucha:
Спасибо, опечатался. Поправил.
Комментарий для Евгения Степанищева:
Наверное, не после 31 января, а после 31 декабря. :-)
Комментарий для Евгения Степанищева:
Евгений, у вас было правильно.
Из Википедии: «В России григорианский календарь введён в 1918 году декретом Совнаркома, согласно которому в 1918 году после 31 января следовало 14 февраля.»
И ещё вот здесь, кажется, наоборот должно быть:
блин, не знал про «ошибку» в 13 дней, спасибо )
Комментарий для Роман Баранов:
О, спасибо, не заметил, глупая ошибка.
Действительно ли программисты должны знать о високосной секунде? Ведь на Википедии написано, что нет никакого правила, когда она появляется.
Комментарий для on-trail.livejournal.com:
Конечно должны. Многие программы считают, что время 23:59:60 — ошибка. А это не так.
Комментарий для drucha:
А нет, всё правильно было. Вернул назад.
Комментарий для Евгения Степанищева:
Евгений, а как вы относитесь к тому, что многие языки программирования и базы данных используют пролептический григорианский календарь и считают, что в 1500 году было 365 дней?
Комментарий для Кирилл Зорин:
Считаю, что для специальных нужд нужны специальные библиотеки и решения. Так что всё нормально, на мой взгляд.
Комментарий для Евгения Степанищева:
Спасибо. Просто мне это всё упрощение как-то не очень нравилось, ведь Джаве и СУБД Оракл ничто не мешает учитывать смену календарей.
про 128 дней сказано. но не сказано, что выкидывать высокосный год раз в 128 посчитали неудобным и решили выкидывать 3 раза за 400 лет, т. е. раз в 133 1/3 года. что слегка отличается от 128 лет.
Комментарий для zg.livejournal.com:
Спасибо за уточнение.
Комментарий для Кирилл Зорин:
Пролептический григорианский разумнее. А астрономический (там, где 2 год до н.э. именуется -1 годом) еще разумнее
Если нужна дата «по местному» есть конвертеры
К тому же, возникает путаница. Италия, например, приняла календарь в 1582, Англия в 1752, Россия в 1918. По кому конвертировать? Класс DateTime в Ruby по-умолчанию по Италии, но не все же мы в Италии
Оказывается некоторые Линуксы зависли в эту «лишнюю» секунду: http://habrahabr.ru/post/146863/
До 1918 года Россия была отсталой страной! :-)
Комментарий для не HTML:
Отсталой на 13 дней? :)