Unix timestamp в дату и обратно
- Unix, секунды
- Unix, миллисекунды
- ISO 8601, UTC
- ISO 8601, выбранный пояс
- Человеческим языком
- День недели
- Относительно сейчас
- Смещение пояса
Unix timestamp — это количество секунд, прошедших с 1 января 1970 года по UTC. Всё считается в вашем браузере.
Об инструменте: Unix timestamp и дата
Базы данных, логи и ответы API хранят время числом, и прочитать его на слух невозможно. Этот инструмент превращает такое число в понятную дату и обратно — оба поля связаны, поэтому править можно любое. Здесь нет сторонней рекламы и регистрации.
Всё считается в вашем браузере — значение не отправляется на сервер и нигде не сохраняется.
Главные преимущества инструмента:
Единица определяется сама: секунды, миллисекунды, микросекунды или наносекунды распознаются по порядку величины. Если догадка ошибочна, единицу можно задать вручную.
Любой часовой пояс: не только ваш и UTC, а весь список IANA. Это главное, когда сервер живёт в одном поясе, а вы в другом.
Текущее значение всегда на виду: вверху тикает живой timestamp в секундах и миллисекундах, копируется одним кликом.
Что такое Unix timestamp
Это количество секунд, прошедших с 1 января 1970 года, 00:00 UTC — момента, который называют началом эпохи. Число не зависит от часового пояса и от перехода на летнее время, поэтому его удобно хранить: одно и то же мгновение в Украине и в Калифорнии обозначается одинаково, а расходятся уже способы его показать.
Секунды или миллисекунды
Стандартный Unix timestamp считает секунды, и именно так его отдают PHP, Python и базы данных. Но JavaScript в Date.now() возвращает миллисекунды, поэтому число там в тысячу раз больше. Это самая частая причина, почему дата вдруг оказывается в 1970 году или, наоборот, в далёком будущем.
Различить их легко по длине: в секундах современная дата имеет 10 цифр, в миллисекундах — 13. Микросекунды дают 16 цифр, наносекунды — 19; такие значения встречаются в Python и в базах вроде ClickHouse.
О часовых поясах
Сам timestamp пояса не имеет. Пояс появляется только тогда, когда число превращают в дату, и именно здесь возникает большинство ошибок.
Сервер обычно живёт в UTC: если в логах время не совпадает с вашими часами на несколько часов, почти всегда дело в этом.
Переход на летнее время сдвигает смещение: для Киева это +02:00 зимой и +03:00 летом. Инструмент учитывает это для каждой конкретной даты, а не берёт текущее смещение.
Одно и то же мгновение имеет разные написания: смена пояса здесь не меняет момент, а лишь то, как он выглядит.
Несколько практических советов
Сравнивайте моменты числами, а не строками: два разных написания могут означать одно мгновение, и наоборот.
Храните в UTC, показывайте в поясе пользователя: это правило спасает от большинства проблем со временем в приложениях.
Остерегайтесь 2038 года: в 32-битном знаковом целом timestamp переполняется 19 января 2038 года. Если где-то в системе время лежит в
int32, это стоит проверить заранее.Отрицательные значения тоже действительны: они обозначают даты до 1970 года, и инструмент их принимает.