# Даты, которые ломают технику: 1 января 1970-го, 29 февраля и ещё пять дней, когда отказывала электроника

> Айфон, который не включается после смены даты, облако Microsoft, упавшее 29 февраля, и самолёты, которые не взлетели из-за GPS. Разбираем даты, на которых спотыкается техника, и почему так происходит.


31 декабря 2008 года плееры Microsoft Zune на 30 гигабайт по всему миру зависли на загрузочном экране. Microsoft советовала дождаться, пока сядет батарея, потом не трогать плеер до полудня 1 января по Гринвичу и только тогда ставить на зарядку. И это работало, потому что плеер сломала дата.

На таких днях спотыкаются айфоны, облачные сервисы, навигаторы и даже Excel. Ближайший похожий повод — уже в это воскресенье, для всего, что настроено на европейское время.

**Коротко:** техника ломается на датах по трём причинам. Первая — календарь полон исключений, а программы проверяют на обычных днях. Вторая — у счётчика времени есть потолок, как у одометра. Третья — власти меняют правила перевода часов. Ближайший повод — 25 октября: Европа переводит часы, и у неточно настроенных устройств время может уйти. С 2027 года лишнюю секунду добавлять перестанут, а на 2036 и 2038 годы приходятся переполнения сразу трёх счётчиков.

## Почему дата — самое коварное число для компьютера

Компьютер не знает, что такое воскресенье или 29 февраля. Внутри у него одно большое число: сколько секунд прошло от условной точки отсчёта. У большинства систем это полночь 1 января 1970 года, у протокола сетевого времени — 1 января 1900-го, у GPS — 6 января 1980-го. Дату для экрана программа вычисляет из этого числа сама, по правилам календаря.

Дело в том, что календарь — это не таблица умножения, а свод исключений, накопленных за века. Год обычно длится 365 дней, но каждый четвёртый — 366, хотя 1900-й, 2100-й и любой другой год на 00, кроме делящихся на 400, високосным не считается. Сутки обычно длятся 86 400 секунд, но иногда в них вставляют лишнюю. А время в целой стране может сдвинуться на час просто потому, что так решили власти.

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

Вторая беда — в самом счётчике. У него фиксированное число разрядов, и рано или поздно он доходит до максимума. Так бывает со счётчиком пробега на старой «девятке»: домотал до 99 999, перещёлкнул на нули — и по приборам машина снова новая. Хозяин-то знает правду, а программа знает только то, что показал ей счётчик. Когда запаса хватает на десятки лет, проблема выглядит далёкой, пока эти десятки лет не проходят.

## 1 января 1970-го: айфон, который не хотел включаться

В феврале 2016 года по сети разошёлся розыгрыш: поставьте на айфоне дату 1 января 1970 года, перезагрузите — и увидите ретро-логотип. Логотипа никто не увидел. Телефон зависал на яблоке и дальше не загружался.

Попадались iPhone 5s и всё, что вышло позже, а также iPad Air, iPad mini 2 и iPod touch шестого поколения — устройства на 64-битных процессорах. Позже выяснилось, что опасна любая дата до мая 1970 года: после перезагрузки телефон мог больше не включиться. Причину Apple так и не объяснила.

Одна из версий связана с часовым поясом. Для системы полночь 1 января 1970 года — это ноль секунд, и любая поправка рядом с нулём может увести счёт в минус. Где-то в глубине системы отрицательного числа, видимо, не ждали, и загрузка обрывалась.

Исправление пришло в iOS 9.3: дату раньше 2001 года там выбрать просто нельзя. Но история на этом не закончилась. В апреле 2016 года исследователи показали, что вручную ничего крутить не нужно: достаточно поддельной точки Wi-Fi, которая раздаёт телефону неверное время. Айфоны по умолчанию сверяют часы с сервером в сети, и поддельный сервер мог отправить телефон в 1970 год без ведома владельца. Эту дыру закрыли в ближайшем обновлении iOS. Тем, у кого телефон уже завис, Apple советовала обращаться в поддержку: часть айфонов оживала сама после полной разрядки, остальным помогали в сервисе.

<div class="callout callout-warning">
<div class="callout-title">⚠️ Проверять не стоит</div>

На современных айфонах и Android-смартфонах этот трюк уже не работает. Но играть с датой вручную всё равно плохая идея: со сбитыми часами перестают работать банковские приложения, оплата телефоном и одноразовые коды. Почему так происходит — в разборе о том, [почему не работает оплата телефоном](https://tehprosto.ru/chto-delat/ne-rabotaet-oplata-telefonom/).
</div>

## 29 февраля: день, который программы не ждут

Вернёмся к Zune: там сломался не сам день 29 февраля, а последний день високосного года. Виновником оказался драйвер часов в контроллере питания, и владельцы плееров Toshiba Gigabeat S с тем же драйвером жаловались на такое же зависание. Драйвер вычислял текущий год, отнимая от общего числа дней по 365 или 366. На 366-й день високосного 2008 года счёт не сходился, и программа крутилась на месте до конца суток. Когда наступало 1 января, счёт сходился и плеер оживал. Отсюда и странный совет: нужно было просто дождаться, пока неудачный день закончится.

29 февраля 2012 года такая же ошибка уронила облако Microsoft Azure, на котором работали сайты и сервисы тысяч компаний. Виртуальная машина при запуске получала сертификат на год, и срок окончания ставился на тот же день следующего года. 29 февраля плюс год давало 29 февраля 2013-го, такого дня в календаре нет, поэтому сертификат не создавался и машина не запускалась. Azure считал, что виноват сервер, и переносил машины на соседние, где всё повторялось. Сбой начался в полночь по Гринвичу, а полностью сервис восстановили примерно через 34 часа. Клиентам вернули треть месячной оплаты.

Казалось бы, за 12 лет урок усвоили. Но 29 февраля 2024 года в Новой Зеландии на несколько часов встали терминалы самообслуживания на заправках сразу нескольких сетей, и производитель признал ошибку високосного года. В тот же день в Швеции отказали кассовые терминалы в магазинах и аптеках крупной сети, а в Париже в полночь погасло уличное освещение.

## Excel до сих пор верит в 29 февраля 1900 года

Откройте Excel и введите в ячейку `=ДАТА(1900;2;29)`. Таблица спокойно примет дату, которой никогда не было: 1900 год не делится на 400, поэтому високосным не считается.

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

Не исправляют её и сейчас. Каждая дата в Excel хранится как порядковый номер дня: 1 января 1900 года — это 1, а несуществующее 29 февраля получило номер 60. Если выбросить этот день, почти все даты во всех документах мира съедут на единицу, а таблицы перестанут совпадать с другими программами. По-моему, сделка честная: неверный день недели в 1900 году не мешает никому, а сдвинутые даты помешали бы всем.

<div class="callout callout-fact">
<div class="callout-title">🔍 Где ошибка видна на практике</div>

Почти нигде. Неверным получается только день недели для дат до 1 марта 1900 года: функция ДЕНЬНЕД ошибается на один день. Все остальные годы, включая 2100-й, Excel считает правильно.
</div>

<div class="callout callout-info">
<div class="callout-title">📲 Любите такие истории?</div>

Мы каждую неделю разбираем технику вокруг нас — спокойно и по делу, без рекламных штампов. Подпишитесь на «Техпросто» в [MAX](https://max.ru/channel_tehprosto), [Telegram](https://t.me/tehprosto) или [Дзене](https://dzen.ru/tehprosto), и такие разборы будут приходить сами.
</div>

## Минута из 61 секунды

Земля вращается неравномерно, а атомные часы идут идеально ровно. Чтобы мировое время не убегало от солнечного, с 1972 года в него вставили 27 лишних секунд. В такие ночи часы показывают 23:59:60, и минута длится 61 секунду.

30 июня 2012 года лишняя секунда вызвала сбой в ядре Linux, на котором работает большая часть интернет-серверов. Таймеры системы оказались на секунду впереди часов и разом разбудили множество программ, которые должны были просыпаться в разное время. Процессоры ушли в полную загрузку и так и работали вхолостую. Reddit на время почти перестал открываться, пострадали Mozilla и Gawker, а у авиакомпании Qantas около часа не работала система бронирования, так что пассажиров регистрировали вручную. У немецкого хостинга Hetzner потребление электричества подскочило примерно на мегаватт и держалось, пока серверы не перезагрузили.

Лишнюю секунду в новогоднюю ночь 2017 года не пережила Cloudflare — компания, через которую работает заметная часть сайтов в мире. В её программе для DNS, адресной книги интернета, время ответа получалось как разница между текущим временем и временем запроса. Когда часы отступили на секунду назад, разница получилась отрицательной, и программа падала. На пике сбоило около 0,2% запросов к DNS. Самые проблемные серверы починили за полтора часа, а последние следы сбоя убрали только к утру. А всё потому, что программисты были уверены: время не может идти назад.

Крупные компании давно не вставляют секунду скачком. Google, например, растягивает её на сутки: с полудня до полудня каждая секунда на его серверах чуть длиннее обычной, и лишняя набирается незаметно.

А 15 октября 2026 года Генеральная конференция по мерам и весам проголосовала за то, чтобы лишние секунды больше не добавлять. С 20 мая 2027 года мировое время пойдёт без вставок, а расхождению с вращением Земли разрешат копиться, пока оно не дорастёт до часа. Дело в том, что Земля в последние годы временами вращается чуть быстрее, и впервые замаячила отрицательная секунда — минута длиной 59 секунд. Такого не случалось ни разу, и как на неё отреагируют программы, толком никто не знает, поэтому рисковать не захотели.

## GPS раз в 19,6 года забывает, какая сейчас неделя

Спутники GPS передают время в виде номера недели и секунды внутри неё. На номер недели в старом формате сигнала отведено 10 бит, это 1024 недели, примерно 19,6 года. Потом счётчик сбрасывается в ноль, и приёмник, который об этом не знает, решает, что на дворе снова 1980 год, или выдаёт дату на 20 лет назад.

Первый сброс случился в ночь с 21 на 22 августа 1999 года, второй — с 6 на 7 апреля 2019-го. О сбросе знали двадцать лет, и всё равно в 2019-м оборудование, которое брало дату у старого GPS-приёмника, получило её на 20 лет назад. Рейс KLM из Амстердама в Боготу вылетел с опозданием на 7 часов из-за необновлённой программы управления полётом, а в Нью-Йорке отключилась беспроводная сеть городских служб. Пострадали и старые смартфоны, проданные в 2013 году и раньше. Если старый автомобильный навигатор показывает дату из прошлого, обновите прошивку на сайте производителя.

Следующий сброс придётся на ночь с 20 на 21 ноября 2038 года. Новые сигналы GPS отводят на номер недели 13 бит, и этого хватит до 2137 года, но старые приёмники к тому моменту наверняка ещё где-то будут работать. Откат номера недели ГЛОНАСС не касается: он передаёт дату номером дня, а не недели.

Подробнее о том, откуда вообще взялась спутниковая навигация, — в материале [о вещах, которые придумали совсем для другого](https://tehprosto.ru/posts/pridumali-dlya-drugogo/).

## Перевод часов и часовые пояса

Чтобы показать местное время, телефону и компьютеру нужен справочник: в каком поясе город и когда там переводят часы. Справочник зашит в систему и обновляется вместе с ней, а законы меняются быстрее.

Весной 2011 года Россия в последний раз перевела часы на летнее время и решила больше их не трогать. Но утром 30 октября 2011 года многие телефоны и компьютеры по старой памяти сами перевели время на час назад, и кто-то опоздал на работу, а кто-то пришёл на час раньше. Microsoft ещё в августе выпустила для Windows обновление с новыми правилами для Москвы, но поставили его далеко не все. В 2014 году Россия вернулась на зимнее время, и всё повторилось: снова срочные обновления справочника часовых поясов для Windows, Android и iOS.

Европа часы до сих пор переводит и в воскресенье, 25 октября 2026 года, уходит на зимнее время. Если в то утро какие-то часы в доме сами сдвинулись на час, скорее всего, в их настройках стоит европейский часовой пояс или включён переход на летнее время, а бывает, что в прошивке устарел справочник поясов. Выберите в настройках пояс Москвы и отключите переход на летнее время.

<div class="callout callout-tip">
<div class="callout-title">💡 Проверьте часы на своём телефоне</div>

На iPhone: **Настройки → Основные → Дата и время → Автоматически**. На Android: **Настройки → Система → Дата и время** (на Samsung — **Общие настройки → Дата и время**), там включите автоматические дату и часовой пояс. От точных часов зависят оплата телефоном, банковские приложения и одноразовые коды для входа: например, «неверный код» из приложения-генератора при [входе в Госуслуги](https://tehprosto.ru/chto-delat/ne-mogu-vojti-v-gosuslugi/) нередко означает, что на телефоне сбились часы.
</div>

## 2036 и 2038: следующие в очереди

Когда телефон или роутер сверяет часы через интернет, он пользуется протоколом сетевого времени NTP. Тот считает секунды с 1 января 1900 года, и под них отведено 32 бита. Счётчик переполнится 7 февраля 2036 года в 06:28:16 по Гринвичу.

Но на этот случай в протоколе давно предусмотрели запас, так что телефоны, компьютеры и роутеры с обновлёнными прошивками переход не заметят. Хуже придётся простой технике, у которой после отключения питания часы сбрасываются на 1970 или 2000 год, и встроенной электронике, которую никто не обновляет.

Через два года после этого, 19 января 2038 года в 03:14:07 по Гринвичу, переполнится 32-битный счётчик Unix-времени, и техника со старой прошивкой решит, что на дворе декабрь 1901 года. Современные телефоны и компьютеры считают время 64-битным числом, их это не затронет. Подробно эту историю мы разобрали в материале [о странностях компьютера, которые достались нам от 80-х](https://tehprosto.ru/posts/strannosti-kompyutera-iz-80h/).

<div class="callout callout-fact">
<div class="callout-title">🔍 2038 год — дважды</div>

На 2038 год приходятся сразу два переполнения: в январе — у счётчика Unix-времени, в ноябре — у номера недели в старом сигнале GPS. Причины у них разные, а совпадение случайное.
</div>

## Частые вопросы

**Может ли сломаться мой телефон, если поставить неправильную дату?**
Современный — нет: такого бага, как у айфонов 2016 года, ни в iOS, ни в Android больше нет. Но со сбитыми часами перестанут работать оплата, банковские приложения и коды подтверждения, а некоторые сайты начнут ругаться на сертификат безопасности.

**Что будет с техникой 29 февраля 2028 года?**
Вероятно, где-то снова откажет что-нибудь непроверенное: терминал, умные часы, камера. Но массовых сбоев ждать не стоит: о такой дате знают заранее, и большинство систем её успевают проверить.

**Почему телефон после полной разрядки показывает 1970 или 2000 год?**
Когда батарея садится в ноль, часы телефона могут откатиться к начальной точке отсчёта. Стоит подключиться к мобильной сети или Wi-Fi, и при включённом автоматическом времени оно подтянется само.

О 29 февраля, о лишней секунде и о сбросе недель GPS знали за годы, и каждый раз где-то оставался кусок кода, который проверили на всех днях, кроме нужного. В 2036 и 2038 годах, скорее всего, будет то же самое: большие сервисы подготовятся, а споткнётся забытый контроллер в котельной, который двадцать лет показывал верное время и ни разу не обновлялся.

*Если статья помогла — поделитесь с теми, кому может пригодиться. И заходите в наш канал в [MAX](https://max.ru/channel_tehprosto), [Telegram](https://t.me/tehprosto) и [Дзен](https://dzen.ru/tehprosto) — там анонсы новых материалов.*

