Unix-временные метки и UTC
Что такое Unix-эпоха, разница между секундами и миллисекундами, и как временные метки связаны с местным временем
Unix-временная метка подсчитывает секунды (или миллисекунды) с 1970-01-01 00:00:00 **UTC** — начала эпохи. Она не содержит информации о часовом поясе; одно число представляет один момент времени во всем мире. Отображение местного времени зависит от правил IANA. Логи, API и базы данных активно используют этот формат.
Секунды против миллисекунд
- Unix-секунды: 10 цифр (например, 1700000000)
- JavaScript Date: миллисекунды, 13 цифр
- Их смешение вызывает ошибки в 1000 раз — частая проблема
- 2038 год: ограничения 32-битных систем решены в современных 64-битных
Связь с местным временем
Метка → местное: ПО применяет правила IANA. Местное → метка: требуется часовой пояс + летнее время для получения UTC-момента — аналогично Основы UTC. Пользователи могут конвертировать логи UTC в свое время с помощью Конвертер.
Лучшие практики
- Хранить/передавать UTC или метки; локализовать только в интерфейсе
- Никогда не хранить неоднозначные местные строки без смещения
- Документировать, использует ли API секунды или миллисекунды
- Правила часовых поясов: Что такое база данных временных зон IANA в Гиды