Unix-время (Unix timestamp) — это количество секунд, прошедших с 1 января 1970 года 00:00:00 UTC. Эту дату называют «эпохой Unix» (Unix epoch), и именно от неё отсчитывают время практически все современные операционные системы, базы данных и языки программирования.
Почему именно 1970 год
Дата выбрана не из-за какого-то особого события, а из практических соображений: разработчики Unix в Bell Labs в начале 1970-х просто взяли текущий на тот момент год как удобную круглую точку отсчёта. Никакого более глубокого смысла в этой дате нет.
Почему этот формат так популярен в бэкенд-разработке
В логах серверов, ответах REST API и записях баз данных вроде PostgreSQL или MySQL Unix-время встречается на каждом шагу именно потому, что хранить его как одно целое число проще, чем отдельно год, месяц, день и час. Сравнение и сортировка событий в логе сводятся к обычному сравнению чисел, без разбора часовых поясов и календаря.
Проблема 2038 года и почему она не только теоретическая
Многие старые системы — включая промышленные контроллеры, банкоматы и встроенное оборудование, которое годами работает без обновления прошивки, — хранят Unix-время как 32-битное целое число со знаком, способное представлять значения лишь до 19 января 2038 года. После этой даты такое число переполнится, что может привести к сбоям в системах, которые физически сложно или дорого обновить.
Зачем это нужно
- Конвертировать timestamp из логов или ответов API в понятную дату и время.
- Вычислять разницу между двумя моментами времени без ручных расчётов календаря.
- Диагностировать проблемы, связанные с часовыми поясами при работе с timestamp.
Unix-время и високосные секунды
Unix-время считает, что каждые сутки длятся ровно 86400 секунд, игнорируя високосные секунды (leap seconds), которые время от времени добавляют к UTC для компенсации замедления вращения Земли. Это означает, что Unix-время технически не является точным отражением UTC в моменты добавления високосной секунды — большинство систем просто «растягивают» или повторяют одну секунду, чтобы избежать разрыва в счётчике.