YamlBox

Интернет и кодирование · 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. Только его рендеринг имеет часовой пояс, поэтому для преобразования в локальную дату необходимо знать, в какой зоне находится читатель, и почему два разработчика могут не согласиться по поводу одной и той же отметки времени, хотя оба они верны.

Инструменты, упомянутые в этом посте

Просмотрите полный список инструментов 19

Еще статьи для чтения

6 минута чтения

JWT декодер: что внутри токена, а что нет

Используйте декодер JWT для проверки заголовка, полезной нагрузки и срока действия токена – и поймите, почему декодирование не проверяется, поскольку проверки утверждений стоят за большинством 401.

Все 19 публикации →