Есть всего три претендента на звание самого популярного ПО для работы с электронными таблицами: VisiCalc — первая электронная таблица, становившаяся причиной для покупки некоторых домашних компьютеров конца 1970-х, Lotus 1-2-3, доминировавшая на первых PC в 1980-х, а после них — Microsoft Excel (которому очень недолго предшествовал Multiplan). Excel доминировал на рынке с 1990-х, поэтому можно запросто вообразить, что он существовал всегда, но даже внутри Excel скрываются кое‑какие особенности его предшественников.

Одна из них задокументирована в официальном документе по устранению неполадок Microsoft Excel:

Первая версия Lotus 1-2-3 предполагала, что 1900 год был високосным, хотя на самом деле он им не был. Это позволяло программе проще обрабатывать високосные годы, при этом почти не вредя вычислениям с датами.

Когда были выпущены Microsoft Multiplan и Microsoft Excel, в них тоже предполагалось, что 1900 год был високосным. Это допущение позволяло Multiplan и Microsoft Excel использовать ту же систему числового представления дат, что и в Lotus 1-2-3, обеспечивая улучшенную совместимость с Lotus 1-2-3. Работа с 1900 годом как с високосным также упрощала перенос листов из одной программы в другую.

Да, даже в современной версии Excel можно легко получить 29 февраля 1900 года — дату, которой не существовало:

То, что написано ниже в этом документе, читать довольно забавно: ты как будто чувствуешь раздражение от того, что кому‑то приходится снова и снова отвечать на этот вопрос или оказываться виновным в решении, которое он даже не принимал:

Хотя технически возможно исправить это поведение, чтобы текущие версии Microsoft Excel не считали 1900 год високосным, минусы такого решения перевешивают преимущества.

Если исправить это поведение, то возникнет множество проблем, и в том числе:

  • Почти все даты в листах современного Microsoft Excel и других документах будут уменьшены на один день. Для корректирования этого сдвига могут потребоваться существенные время и усилия, особенно в формулах, где используются даты.

  • Некоторые функции, например, функция WEEKDAY (ДЕНЬНЕД), будут возвращать другие значения; это может привести к неправильной работе формул в листах.

  • Исправление этого поведения нарушит совместимость числового представления дат между Microsoft Excel и другими программами, использующими даты.

Если это поведение не исправлять, то возникнет только одна проблема:

  • Функция WEEKDAY будет возвращать некорректные значения для дат до 1 марта 1900 года, а поскольку большинство пользователей не работает с датами до 1 марта 1900 года, эта проблема встречается редко.

Но мне всё же нравятся подробности этого замечательно примера совместимости багов.

Комментарии (1)


  1. bbon
    21.10.2026 16:25

    >Первая версия Lotus 1-2-3 предполагала, что 1900 год был високосным, хотя на самом деле он им не был.
    Аккуратно напомню, что в Российской империи 1900 год был високосным, хотя какое дело этим таблицам до нашей печальной истории..