Конвертер Unix timestamp в дату

Преобразуйте Unix timestamp в читабельные дату и время — или любую дату обратно в Unix timestamp. Поддерживает секунды и миллисекунды.

Поделиться инструментом

Встроить на сайт

Что такое Unix timestamp?

Unix timestamp, также называемый Unix time или POSIX time — это количество секунд, прошедших с момента 1970-01-01 00:00:00 UTC, известного как Unix epoch. Это широко используемый стандарт в вычислениях, поскольку он представляет точку во времени одним целым числом, что упрощает хранение, сравнение и арифметические операции.

JavaScript работает внутри с миллисекундами, поэтому Date.now() возвращает Unix timestamp, умноженный на 1000. Многие API, базы данных и серверные системы используют вместо этого секунды. Этот инструмент принимает оба формата и автоматически определяет секунды или миллисекунды на основе введённого числа.

Известные Unix timestamps

TimestampДата (UTC)Примечание
01970-01-01 00:00:00Unix epoch
1,000,000,0002001-09-09 01:46:401 миллиард секунд
2,000,000,0002033-05-18 03:33:202 миллиарда секунд
2,147,483,6472038-01-19 03:14:07Проблема 2038 года (максимум для 32-бит)

Почему 1970?

Unix epoch 1 января 1970 года был выбран отчасти по соглашению, отчасти из практических соображений. Unix разрабатывался в конце 1960-х и начале 1970-х годов в Bell Labs. Разработчикам нужна была недавняя, «круглая» дата для начала временной шкалы. 1 января 1970 года была достаточно близко к тому времени, чтобы быть практичной, и не имела никакого особого технического значения — это была просто удобная точка отсчёта.

Альтернативные даты epoch существуют в других системах: Windows FILETIME начинается 1 января 1601 года; GPS time начался 6 января 1980 года; NTP epoch — 1 января 1900 года. При преобразовании между системами знание epoch каждой из них необходимо.

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

Исходный Unix timestamp измеряется в секундах. Большинство серверных языков и систем (Unix shell, Python's time.time(), PHP's time(), большинство баз данных) используют секунды. JavaScript's Date.now() и new Date().getTime() возвращают миллисекунды. Это несоответствие — частая причина ошибок, когда JavaScript-фронтенды взаимодействуют с backend API.

Unix timestamp в секундах — это сейчас 10-значное число (около 1 700 000 000 по состоянию на 2023 год). Timestamp в миллисекундах — это 13-значное число. Калькулятор определяет, какой формат вы ввели, по количеству цифр и преобразует его соответственно.

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

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

Это иногда называют «Y2K38» или Unix Millennium Bug. Современные 64-битные системы не подвержены этой проблеме, так как знаковое 64-битное целое число может представлять timestamp примерно на 292 миллиарда лет. Однако встроенные системы, устаревшие базы данных и старое 32-битное программное обеспечение могут быть всё ещё уязвимы. Многие отрасли — включая телекоммуникации, банковское дело и системы промышленного управления — проводят постоянные работы по миграции для решения этой проблемы.

Как получить текущий Unix timestamp

Язык / окружениеКоманда
JavaScriptMath.floor(Date.now() / 1000)
Pythonimport time; int(time.time())
PHPtime()
Bashdate +%s
SQL (PostgreSQL)EXTRACT(EPOCH FROM NOW())::int
SQL (MySQL)UNIX_TIMESTAMP()
Gotime.Now().Unix()
RustSystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_secs()

Практическое применение

Разработка API: REST API обычно используют Unix timestamp для полей created_at, updated_at и истечения токенов. Timestamp не зависит от часового пояса и однозначен — в отличие от отформатированных строк даты, которые зависят от локали и соглашений форматирования.

Истечение токенов: JWT (JSON Web Tokens) используют Unix timestamp для claims exp (истечение) и iat (время выдачи). Токен истекает, когда текущий timestamp превышает значение exp. Вычисление времени истечения — «этот токен должен истечь через 24 часа» — требует добавления 86 400 секунд к текущему timestamp.

Cache TTL: Истечение кэша часто задаётся как Unix timestamp или как количество секунд от текущего момента. Отладка проблем кэша часто требует преобразования сохранённого timestamp истечения в понятный для человека формат даты.

Анализ логов: Серверные логи часто содержат Unix timestamp. Преобразование их в читаемые даты — первый шаг в сопоставлении записей логов с реальными событиями.

Хранение в базе данных: Хранение timestamp в виде целых чисел, а не отформатированных строк, избегает ошибок преобразования часовых поясов и упрощает сортировку, запросы по диапазону и арифметику. Запрос «все записи за последние 7 дней» превращается в WHERE created_at > (NOW_UNIX - 604800).