Интернет и кодирование · 5 минута чтения
Конвертер временных меток: время эпохи без догадок
Время Unix — это количество секунд, прошедших с 1970-01-01T00:00:00 UTC — одно целое число, которое понимает каждая система и которое почти каждый разработчик хотя бы один раз неправильно прочитал. Преобразователь временных меток превращает это целое число во что-то, что человек может проверить и обратно, что обычно является самым быстрым способом ответить на вопрос, с которого начинается каждое исследование журнала: когда это на самом деле произошло?
Обновлено
Секунды или миллисекунды: ошибка, которая повторяется
Десять цифр — секунды; тринадцать — это миллисекунды. Если ошибетесь, то дата окажется в 1970 году или через тысячи лет — ошибка, которую сразу можно распознать, как только вы ее увидите, и именно поэтому ее стоит признать. `Date.now()` в JavaScript возвращает миллисекунды, в то время как большинство серверных языков и баз данных хранят секунды, поэтому граница между браузером и API — это то место, где обычно совершается ошибка.
1760000000 → 2025-10-09 09:33:20 UTC (seconds)
1760000000000 → 2025-10-09 09:33:20 UTC (milliseconds)
UTC — это правда; местное время — выбор презентации
Значение эпохи является однозначным, поскольку по определению это формат UTC. Путаница возникает, когда вы отображаете это: в одно и то же время в каждом часовом поясе разное время на настенных часах, а запрос в службу поддержки с надписью «это произошло в 15:00» полезен только с прикрепленным часовым поясом. Сохраняйте и передайте эпоху или ISO 8601 UTC, конвертируйте в местное время для отображения и всегда добавляйте зону во все, что читает человек.
Где временные метки появляются в реальной работе
- Строки журнала. Самый быстрый способ — преобразовать столбец эпохи в читаемые даты, прежде чем вы начнете читать их по смыслу.
- API ответы — `created_at`, `expires_at` и заголовки кэша, которые становятся более полезными после преобразования.
- JWT заявки — `exp` и `iat` — это секунды эпохи, поэтому проверка истечения срока действия представляет собой одно вычитание.
- Строки базы данных — сравнение сохраненной эпохи с текущим является арифметическим; сравнение его с «прошлым вторником» требует преобразования.
Временная метка без часового пояса — это ошибка, ожидающая читателя. Печатные даты относятся к стандарту ISO 8601 с явным смещением, например 2025-10-09T09:33:20Z.
Граница 2038 года
Подписанные 32-битные секунды с момента окончания эпохи 19 января 2038 года. Системы, построенные на этом хранилище, включая старые столбцы MySQL и 32-битные платформы time_t, не могут представлять более поздние даты, а режим отказа — это переход в 1901 год, а не ошибка. Если вы проектируете что-то, рассчитанное на то, чтобы пережить следующее десятилетие, сохраните 64-битные целые числа или собственный тип даты сейчас; миграция только усложняется позже.
Преобразование в обоих направлениях, в браузере
Преобразователь временных меток YamlBox принимает секунды или миллисекунды, показывает UTC и местные интерпретации рядом с выходными данными ISO 8601 и идет в обратном направлении от даты назад к эпохе. Он работает полностью на стороне клиента, поэтому временные метки из производственных журналов никогда не покидают вашу машину.
Конвертер временных меток — часто задаваемые вопросы
Почему на моей метке времени указана дата 1970 года?
Почти всегда несоответствие единиц измерения: миллисекунды интерпретировались как секунды или значение было равно нулю, поскольку поле никогда не заполнялось. Умножьте или разделите на 1000 по необходимости — разница между десятью и тринадцатью цифрами и есть весь диагноз.
В чем разница между временем эпохи и ISO 8601?
Они описывают одно и то же мгновение. Эпоха — это целое число в секундах UTC, компактное и идеально подходящее для арифметических вычислений и хранения; ISO 8601 — это читаемая строка со смещением, лучше для людей, журналов и API, которые должны оставаться разборчивыми.
Включают ли временные метки Unix часовые пояса?
Нет — значение эпохи всегда равно UTC. Только его рендеринг имеет часовой пояс, поэтому для преобразования в локальную дату необходимо знать, в какой зоне находится читатель, и почему два разработчика могут не согласиться по поводу одной и той же отметки времени, хотя оба они верны.
Инструменты, упомянутые в этом посте
Еще статьи для чтения
6 минута чтения
JWT декодер: что внутри токена, а что нет
Используйте декодер JWT для проверки заголовка, полезной нагрузки и срока действия токена – и поймите, почему декодирование не проверяется, поскольку проверки утверждений стоят за большинством 401.
5 минута чтения
Кодировка URL: когда бежать, а когда что-то ломаешь
URL правильно кодировать и декодировать — зарезервированные символы плюс %20, encodeURI и encodeURIComponent, а также ошибки двойного кодирования в неработающих ссылках.