Конвертер Unix-временных меток

Конвертируйте между Unix-временными метками и читаемыми датами. Поддержка точности до секунд и миллисекунд.

Как использовать

  1. Введите Unix-временную метку для преобразования в читаемую дату
  2. Или выберите дату и время для преобразования в Unix-временную метку
  3. Переключайтесь между форматом секунд и миллисекунд

Часто задаваемые вопросы

  • Что такое Unix-временная метка?

    Unix-временная метка — это количество секунд, прошедших с 1 января 1970 года (UTC), также известное как эпоха Unix. Широко используется в программировании и базах данных.

  • В чём разница между временными метками в секундах и миллисекундах?

    Временные метки Unix в секундах состоят из 10 цифр (например, 1700000000), а в миллисекундах — из 13 цифр (например, 1700000000000). JavaScript использует миллисекунды, тогда как большинство Unix-систем использует секунды.

  • Что такое проблема Y2K38?

    32-битные системы хранят временные метки как знаковое 32-битное целое число, которое переполнится 19 января 2038 года. Современные 64-битные системы не имеют этого ограничения.

  • Учитывает ли инструмент часовые пояса?

    Инструмент отображает время как в UTC, так и в вашем местном часовом поясе для удобного сравнения.

Что такое Unix-временная метка

Unix-временная метка (Unix timestamp, POSIX time, Epoch time) — это целое число, представляющее количество секунд, прошедших с 1 января 1970 года, 00:00:00 UTC. Эта точка отсчёта называется «эпохой Unix» (Unix Epoch) и была выбрана при разработке операционной системы UNIX в конце 1960-х годов.

Unix-время — это универсальный, независимый от часового пояса и локали способ представить момент времени. Именно поэтому оно широко используется в:

  • базах данных (MySQL, PostgreSQL, MongoDB)
  • журналах событий (логах) серверов и приложений
  • API-ответах и веб-хуках
  • системах кэширования (HTTP-заголовки Expires, Last-Modified)
  • токенах JWT (поля iat, exp, nbf)

Секунды и миллисекунды: в чём разница

Исторически Unix-время измеряется в секундах и представляет собой 10-значное число (например, 1700000000). Однако JavaScript и многие современные API используют миллисекунды — 13-значное число (1700000000000).

Это различие — источник распространённых ошибок:

  • Date.now() в JavaScript возвращает миллисекунды
  • time() в Python и PHP возвращает секунды
  • System.currentTimeMillis() в Java — миллисекунды

При работе с API всегда уточняйте единицу: временная метка 1700000000 — это 2023 год в секундах, но в миллисекундах это 1970 год плюс примерно 20 дней. Путаница может привести к некорректным датам на несколько десятилетий.

Как определить единицу по числу

Простое правило: если временная метка содержит 10 цифр — это секунды, если 13 — миллисекунды. Для нынешнего десятилетия (2020-е годы):

  • Секунды: ~1 700 000 000
  • Миллисекунды: ~1 700 000 000 000

Проблема 2038 года (Y2K38)

32-битные системы хранят Unix-время как знаковое 32-битное целое число. Максимальное значение такого числа — 2 147 483 647, что соответствует 19 января 2038 года, 03:14:07 UTC. После этого момента счётчик переполнится и перейдёт в отрицательное число, что вызовет некорректную интерпретацию дат.

Это аналог проблемы Y2K (2000 год), только для 32-битных систем. Большинство современных 64-битных операционных систем и языков программирования используют 64-битные целые числа для хранения времени, что отодвигает теоретический предел до 292 миллиардов лет. Однако встроенные системы, промышленное оборудование и устаревшее программное обеспечение на 32-битной архитектуре по-прежнему могут быть уязвимы.

Форматы представления дат в API

При работе с API встречаются несколько стандартных форматов:

  • Unix timestamp (число): 1700000000 — компактно, независимо от часового пояса
  • ISO 8601 (строка): 2023-11-14T22:13:20Z — читаемо, содержит часовой пояс
  • RFC 2822: Tue, 14 Nov 2023 22:13:20 +0000 — формат email-заголовков

Unix-метка предпочтительна для хранения и вычислений (сравнение, разность), ISO 8601 — для отображения и передачи между системами.

Полезные вычисления с временными метками

Временные метки удобны для арифметики с датами:

  • Прошло ли N дней? Вычтите текущую метку из прошлой и сравните с N * 86400
  • Когда истекает токен? Прибавьте время жизни в секундах к метке создания
  • Сортировка по времени? Числа сравниваются быстрее строк