Проблема 2038 года: кому она всё ещё угрожает
Почему 32-битный счётчик секунд переполнится и где искать старые системы.
Короткий ответ
В 03:14:07 UTC 19 января 2038 года знаковый 32-битный счётчик секунд от эпохи Unix достигнет максимума. Следующее значение переполнится, и система может интерпретировать дату как декабрь 1901 года.
Кого это касается
Основной риск — старые 32-битные ОС, встроенные контроллеры, прошивки, промышленные устройства и форматы данных с полем времени на 32 бита. Даже 64-битное приложение может зависеть от старой базы, протокола или библиотеки.
Почему проверять нужно сейчас
Сбой проявляется раньше 2038 года, если система уже рассчитывает сроки на годы вперёд: сертификаты, договоры, бронирования или расписания. Долгоживущие устройства могут оставаться в эксплуатации десятилетиями.
Как готовиться
Инвентаризируйте типы времени на всех границах, тестируйте даты после 19 января 2038 года и мигрируйте хранилища и протоколы на согласованное 64-битное представление. Одной пересборки приложения недостаточно.
Что учитывать на практике
- Проверьте тип time_t и хранилища.
- Ищите встроенные устройства с долгим сроком службы.
- Тестируйте даты после января 2038 года.
- Планируйте миграцию до отказа оборудования.
История времени полезна разработчику именно потому, что привычные часы и календарь состоят из соглашений, исключений и меняющихся правил. Для production-кода используйте поддерживаемые библиотеки и проверяйте граничные даты отдельно.
Источники и дополнительное чтение
Итог
В 03:14:07 UTC 19 января 2038 года знаковый 32-битный счётчик секунд от эпохи Unix достигнет максимума. Следующее значение переполнится, и система может интерпретировать дату как декабрь 1901 года.