Unix time: почему компьютеры считают секунды с 1970 года
История эпохи Unix и практические особенности хранения временных меток.
Короткий ответ
Unix time хранит момент как число секунд, прошедших с 00:00:00 UTC 1 января 1970 года. Эта дата стала эпохой Unix по историческим причинам развития системы; она не является началом компьютерного времени и не кодирует часовой пояс.
Что хранится в timestamp
Timestamp описывает момент на временной шкале. Локальная дата появляется только после применения часового пояса и правил его изменений. Поэтому момент и формат отображения нужно обрабатывать раздельно.
Почему именно 1970 год
Ранний Unix развивался в начале 1970-х, и представление времени несколько раз менялось. Эпоха 1 января 1970 года закрепилась как удобная близкая точка отсчёта. Это соглашение реализации, а не физическая особенность времени.
Где возникают ошибки
Секунды путают с миллисекундами, локальную дату принимают за UTC, а 32-битный диапазон считают бесконечным. На границах систем явно фиксируйте единицы, формат и допустимый диапазон.
Что учитывать на практике
- Отделяйте timestamp от отображения.
- Храните момент времени в UTC.
- Форматируйте дату на стороне пользователя.
- Учитывайте диапазон выбранного типа данных.
История времени полезна разработчику именно потому, что привычные часы и календарь состоят из соглашений, исключений и меняющихся правил. Для production-кода используйте поддерживаемые библиотеки и проверяйте граничные даты отдельно.
Источники и дополнительное чтение
Итог
Unix time хранит момент как число секунд, прошедших с 00:00:00 UTC 1 января 1970 года. Эта дата стала эпохой Unix по историческим причинам развития системы; она не является началом компьютерного времени и не кодирует часовой пояс.