tooly

Конвертер Unix timestamp

Переводите epoch-секунды или миллисекунды в читаемую дату или дату в timestamp. Смотрите ISO 8601, UTC, свой часовой пояс и относительное описание вроде «3 дня назад», плюс текущее Unix-время.

Всё работает в браузере — данные никуда не отправляются

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

  1. 1

    Вставьте timestamp или дату либо нажмите «Использовать» для текущего времени.

  2. 2

    Все форматы считаются мгновенно.

  3. 3

    Скопируйте нужный.

Unix-время в одном абзаце

Unix-время — это число секунд, прошедших с 00:00:00 UTC 1 января 1970 года; этот момент называют эпохой (epoch). Оно полностью игнорирует часовые пояса и переход на летнее время: в любой момент Unix-время — одно и то же число в любой точке Земли. Поэтому это естественный формат для хранения и сравнения моментов в базах данных, логах, полях JWT exp и iat, времени изменения файлов, ответах API и планировщиках в духе cron. Проблема в том, что 1700000000 человеку ничего не говорит — для этого и нужен конвертер. Для справки: это 14 ноября 2023 года, 22:13:20 UTC.

Секунды, миллисекунды и числа подлиннее

Разные системы считают в разных единицах:

  • Секунды, 10 цифр для текущих дат: утилиты Unix и Linux, PHP time(), Python time.time() (с дробной частью), большинство SQL-баз, JWT.
  • Миллисекунды, 13 цифр: JavaScript Date.now(), Java System.currentTimeMillis(), многие JSON API и события аналитики.
  • Микросекунды, 16 цифр, и наносекунды, 19 цифр: некоторые базы данных, Go, инструменты высокоточной трассировки.

Инструмент определяет единицу по величине. Любое целое число с абсолютным значением меньше 100 000 000 000 читается как секунды, до 100 000 000 000 000 (14 цифр) — как миллисекунды, меньше 10^17 — как микросекунды, а всё, что больше, — как наносекунды. Эти пороги работают для любого реалистичного случая: в секундах первый из них был бы 5138 годом, в миллисекундах — началом марта 1973 года.

Значения в микро- и наносекундах обрезаются до миллисекунд, потому что точнее результаты не показывают. Дробные значения вроде 1700000000.5 не принимаются, так что сначала отбросьте дробную часть.

Отрицательные числа работают и дают даты до 1970 года: -86400 — это 31 декабря 1969 года.

Как читать шесть результатов

  • Unix, секунды и Unix, миллисекунды: один и тот же момент в обеих единицах. Миллисекунды сохраняются, если вы вставили дату со временем вроде .250; значение в секундах округляется вниз.
  • ISO 8601: например, 2023-11-14T22:13:20.000Z. Всегда в UTC, что обозначает Z, с точностью до миллисекунд. Это самый безопасный формат для API и JSON: он правильно сортируется как текст, и его разбирает любой язык.
  • UTC: дата в стиле HTTP, Tue, 14 Nov 2023 22:13:20 GMT, которая используется в заголовках Expires, Last-Modified и cookie.
  • Ваш часовой пояс: день/месяц/год с 24-часовым временем, за которыми идёт сокращение часового пояса (или смещение от GMT, если сокращения нет) и название пояса, которое сообщает браузер, например Europe/Berlin. Летнее время учитывается для этой даты, а не по сегодняшнему смещению.
  • Относительно: формулировки вроде «вчера», «через 3 дня» или «2 года назад». Они намеренно приблизительные: месяц считается в среднем как 30,4 дня, а значение обновляется, пока страница открыта.

Как перевести дату в timestamp

Вместо числа можно вставить дату. Самый надёжный ввод — строки ISO 8601, а правила часовых поясов стоит знать, потому что именно из-за них чаще всего ошибаются на несколько часов:

  • 2024-05-01T12:00:00Z и 2024-05-01T12:00:00+02:00 несут собственное смещение и однозначны.
  • 2024-05-01 без времени считается полуночью по UTC.
  • 2024-05-01T12:00 и 2024-05-01 12:00 — дата со временем, но без смещения — считаются вашим местным временем.

Поэтому если вы летом в Берлине, 2024-05-01 и 2024-05-01 00:00 различаются на два часа. Когда конвертируете для сервера или API, добавляйте Z или явное смещение, чтобы не было догадок.

Другие форматы, например May 1, 2024 12:00, зависят от парсера дат браузера и могут вести себя по-разному в Chrome, Firefox и Safari. Форматы, где первым идёт день, вроде 01/05/2024, читаются в американском стиле с месяцем впереди или отклоняются, так что их лучше избегать.

Подводные камни

  • Високосные секунды. Unix-время делает вид, что в каждых сутках ровно 86 400 секунд. 27 високосных секунд, добавленных с 1972 года, не учитываются, что важно только для точных научных измерений времени.
  • Проблема 2038 года. Системы, которые хранят Unix-время как знаковое 32-битное целое, переполняются на 2147483647 — это 19 января 2038 года, 03:14:07 UTC. Вставьте это число, чтобы убедиться. Современные 64-битные системы не затронуты, а вот старые встраиваемые устройства и форматы файлов — могут быть.
  • Расхождение часов. Если JWT отклоняется как «ещё не действителен» или «истёк», сравните его iat и exp с живым значением Текущее Unix-время вверху страницы. Разница в несколько минут указывает на неправильные часы, а не на плохой токен.

Чтобы прочитать поля токена, декодируйте его среднюю часть инструментом «Base64 кодировщик и декодировщик» и приведите JSON в порядок в «JSON форматирование и валидация». Конвертация выполняется в браузере по его собственным часам и настройкам часового пояса.

Вопросы и ответы

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

Единица определяется автоматически по величине: значения меньше 100 000 000 000 считаются секундами, до 14 цифр — миллисекундами, 15–17 цифр — микросекундами, более длинные — наносекундами.

Какие форматы даты принимаются?

ISO 8601 (2024-05-01T12:00:00Z), 2024-05-01 12:00 и всё, что понимает парсер Date вашего браузера.

Какой часовой пояс используется?

Показываются и UTC, и часовой пояс браузера.

Что-то отправляется на сервер?

Нет. Конвертация идёт в браузере.

Похожие инструменты