🕒
Код

Unix timestamp в дату и обратно

Unix timestamp и дата
Текущий 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 года, и инструмент их принимает.