Что это за инструмент?
Временная метка Unix (также называемая временем эпохи) — это количество секунд, прошедших с 1 января 1970 года, 00:00:00 по UTC. Это стандартный способ хранения временных отсчётов в компьютерах: базы данных, файлы журналов, API и языки программирования — все они используют его, поскольку это единое однозначное число, исключающее путаницу с часовыми поясами.
Существует два формата: секунды (сегодня — 10 цифр, например, 1720500000) и миллисекунды (13 цифр, используются в JavaScript и Java). Этот инструмент автоматически определяет, какой из них вы вставили.
Зачем его использовать?
- Мгновенно считывайте временные метки из журналов, строк базы данных и ответов API.
- Автоматическое распознавание секунд и миллисекунд — не нужно гадать.
- Отображает одновременно местное время, UTC, время в формате ISO 8601 и относительное время («3 часа назад»).
- Преобразование в обоих направлениях: временная метка → дата и дата → временная метка.
- Часы, отображающие текущую эпоху в режиме реального времени, для быстрого ориентира.
Как использовать
- Для декодирования: вставьте временную метку (например, 1720500000) в левое поле и нажмите «Преобразовать».
- Просмотрите результат в вашем местном часовом поясе, в формате UTC, ISO 8601 и в виде относительного времени.
- Для кодирования: выберите дату и время в правом поле и нажмите «Преобразовать», чтобы получить временную метку в секундах и миллисекундах.
- Если вам нужна только текущая временная метка, воспользуйтесь часами в верхней части страницы.
Пример
Ввод
1720500000Результат
Local time: 7/9/2024, 1:20:00 PM
UTC time: Tue, 09 Jul 2024 05:20:00 GMT
ISO 8601: 2024-07-09T05:20:00.000Z10-значное число интерпретируется как количество секунд; 13-значное — как количество миллисекунд.
Практические советы
- Отладка ошибок, связанных с «неверным временем»: в 90 % случаев речь идет о проблемах с отображением часового пояса, а не о неверных временных метках. Прежде чем приступать к исправлению кода, сравните строку с указанием времени в формате UTC с логами вашего сервера (серверы обычно ведут логи в формате UTC).
- Дата, которая точно совпадает с 1970-01-01, означает, что временная метка равна 0 или отсутствует — это классический признак нулевого значения, а не реальная дата.
- Дата около 1970 года + несколько дней обычно означает, что где-то секунды были интерпретированы как миллисекунды; дата в 56 000+ году означает обратное.
- В электронных таблицах: Excel подсчитывает количество дней с 1900 года, а не количество секунд с 1970 года. Для преобразования в временную метку в секундах используйте формулу =(A1/86400)+DATE(1970,1,1).
Реальные сценарии использования
Где временные метки создают проблемы на практике: при чтении полей срока действия в JWT и токенах API (exp/iat выражены в секундах по Unix), при сопоставлении времени отправки пользователем отчета об ошибке со строками журнала сервера, при настройке срока хранения в кэше (TTL) и интервалов запуска cron, а также при проверке, действительно ли срок действия сертификата или токена истек. Строка с относительным временем («3 часа назад») — это самый быстрый способ проверки правильности всех этих данных.
Отладка JWT — достаточно распространенный процесс, чтобы описать его подробно: декодируйте полезную нагрузку токена с помощью инструмента Base64, а затем вставьте полученное значение exp сюда — и вы сразу получите ответ на вопрос «истек ли срок действия этого токена и на сколько».
Почему время Unix было разработано именно таким образом
Хранение одного инкрементируемого числа, отсчитываемого от фиксированной эпохи (а не в виде структуры «год/месяц/день/час»), было сознательным выбором в пользу простоты: две временные метки можно сравнивать или вычитать друг из друга с помощью простых арифметических операций, никакой календарной логики не требуется, именно поэтому на этом принципе построены базы данных, форматы журналов и внутреннее представление даты практически во всех языках программирования. Цена этой простоты — именно то, что этот инструмент призван сгладить: люди не мыслят в терминах «секунд с 1970 года», поэтому каждую временную метку необходимо преобразовать обратно в календарную дату, прежде чем она станет понятной человеку, читающему её, и при этом преобразовании необходимо одновременно учитывать часовой пояс, точность (секунды или миллисекунды) и формат отображения.
Часто задаваемые вопросы
Как инструмент определяет, выражена ли моя метка времени в секундах или в миллисекундах?
По величине. Значения, равные 1 000 000 000 000 (1e12) или больше, рассматриваются как миллисекунды; меньшие значения — как секунды. Текущие даты составляют ~1,7 миллиарда секунд и ~1 700 миллиардов миллисекунд, поэтому эти два диапазона не пересекаются для реальных дат.
Почему в моей временной метке указан час, отличный от того, который я ожидал?
Часовые пояса. Временная метка всегда указана в формате UTC; строка «местное время» преобразует её в часовой пояс вашего устройства. Сравните строку UTC с данными в журналах вашей исходной системы — многие серверы ведут журналы в формате UTC.
В чём заключается «проблема 2038 года»?
В системах, где временные метки хранятся в виде 32-разрядных целых чисел со знаком, 19 января 2038 года произойдет переполнение. Современные системы используют 64-разрядные целые числа и не подвержены этой проблеме. Данный инструмент использует числа в JavaScript, которые поддерживают даты, выходящие далеко за пределы 2038 года.
Можно ли преобразовать отрицательные временные метки?
Да. Отрицательные временные метки обозначают даты, предшествующие 1 января 1970 года — например, -86400 соответствует 31 декабря 1969 года.
Включает ли эта эпоха високосные секунды?
Нет. В системе Unix-времени считается, что каждый день состоит ровно из 86 400 секунд, а високосные секунды не учитываются — это намеренное упрощение, позволяющее упростить арифметические вычисления.