Наткнулся на занятную ошибку в софте, которой уже 50 лет, и которая, видимо, не будет исправлена никогда: 1900 год в Microsoft Excel считается високосным, хотя он таким и не является.

В начале восьмидесятых Microsoft готовила к выпуску свой новый продукт: Excel. И ему бы пришлось конкурировать с редактором таблиц Lotus 1-2-3, который вышел на пару лет раньше. И в Lotus ради экономии памяти и упрощения вычислений не стали сильно заморачиваться с правилами проверки, и 1900 год стал високосным. Пользователям было плевать.

В Microsoft решили, что преимуществом Excel будет возможность редактировать и сохранять файлы из Lotus, и для того, чтобы обеспечить совместимость, повторили ошибку определения високосности года. Замысел сработал, и люди начали потихоньку переходить на Excel.

Шли годы, программа Lotus 1-2-3 уже давно загнулась, казалось бы пора исправить ошибку, но не тут-то было.

Дата в Excel хранится в виде целого числа - количества дней с 0 января 1900 года по 31 декабря 9999 года. Задать дату за пределами этого диапазона в Excel невозможно. То есть, проблема касается только диапазона с января по март 1900 года.

В Microsoft уверены, что от исправления будет больше проблем, чем пользы:

  • Придётся как-то решать проблему сдвига всех существующих дат в документах Excel на один день, что может потребовать изменения кода формул и макросов;
  • Изменение поведения некоторых функций (например, WEEKDAY), что может сломать некоторые рабочие листы;
  • Приведёт к нарушению совместимости с другими программами и системами, использующими даты из Excel.

Посмотрели они на это всё, чувствую, и решили, что два первых месяца в 1900 году не то, чтобы такие уж и популярные…