Toolyard

Что такое метка времени Unix?

Что это такое

Метка времени Unix — это число секунд, прошедших с 00:00:00 UTC 1 января 1970 года, которое называют эпохой Unix. В один и тот же момент это число одинаково во всём мире, поэтому его используют API, журналы и базы данных. Например, 1700000000 — это 14 ноября 2023 года, 22:13:20 UTC.

Секунды или миллисекунды?

Метка в секундах сегодня состоит из 10 цифр. JavaScript, Java и многие API используют миллисекунды — это 13 цифр. Если дата получается в 1970 году или через тысячи лет, единица, скорее всего, не та.

Перевести онлайн

Вставьте её в Конвертер меток времени Unix. Он сам определяет секунды или миллисекунды и показывает дату в UTC и в вашем часовом поясе.

В коде и таблицах

  • JavaScript: new Date(1700000000 * 1000)
  • Python: datetime.fromtimestamp(1700000000, tz=timezone.utc)
  • Excel или Google Таблицы: =A1/86400+ДАТА(1970;1;1) (в английской версии DATE(1970,1,1)), затем задайте ячейке формат даты. Результат будет в UTC.
  • Терминал Mac или Linux, текущее время: date +%s

Проблема 2038 года

Системы, хранящие метку как знаковое 32-битное число, исчерпают его 19 января 2038 года в 03:14:07 UTC. Современные системы используют 64 бита, которых хватит на миллиарды лет.

Разобранные примеры

  • 0 — это 1 января 1970 года, 00:00:00 UTC.
  • 86400 — ровно на сутки позже, 2 января 1970 года.
  • -86400 — на сутки раньше, 31 декабря 1969 года. Отрицательные метки времени — даты до 1970 года.
  • 2000000000 — это 18 мая 2033 года, 03:33:20 UTC.

Частые ошибки

  • Думать, что у метки времени есть часовой пояс. Его нет. 1700000000 — один и тот же момент везде; от часового пояса зависит только то, как он отображается.
  • Создавать метку из местного времени, как будто это UTC. Результат смещается на ваше смещение от UTC, часто ровно на несколько часов. После преобразования проверьте известную дату.
  • Месяцы в JavaScript. new Date(2026, 0, 15) — это 15 января: месяцы считаются с 0.
  • Секунды координации. Unix-время считает каждые сутки ровно 86 400 секундами и игнорирует секунды координации, поэтому это не счёт всех прошедших секунд.

Инструменты из этого руководства

Другие руководства