Веб и кодирование

Проблема 2038 года (Y2K38): переполнение 32-битного времени Unix

Проблема 2038 года возникнет, когда знаковый 32-битный счетчик секунд Unix превысит свое максимальное значение 2 147 483 647.

Опубликовано

Критический момент: 19 января 2038 года

В 03:14:07 UTC значение time_t достигнет максимума 2^31 - 1.

Решение проблемы

  • Миграция на 64-битные типы данных времени (time_t 64-bit).
  • Обновление типов колонок в базах данных (с INT4 на BIGINT / INT8 / TIMESTAMP).
  • Аудит встроенных систем и сетевых протоколов со статическими форматами пакетов.

Проверьте пример

Преобразуйте максимальную 32-битную секунду со знаком

Это последняя положительная секунда, представимая 32-битным целым со знаком.

2147483647

Ожидаемый результат: Результат UTC: 2038-01-19 03:14:07.

Проверьте пример

Преобразуйте следующую секунду

Современный конвертер представляет это значение, хотя 32-битная система со знаком уже не может.

2147483648

Ожидаемый результат: Инструмент показывает соседний момент времени, а гайд объясняет границу переполнения старых систем.

Проверьте таймстамп

Конвертер меток времени

Проверьте поведение граничных дат 2038 года в Unix Timestamp Converter.

Открыть Timestamp Converter →