Перейти к основному содержимому
Tooletto

Конвертер меток времени

Конвертируйте метки времени Unix в удобочитаемые даты и обратно — в секундах или миллисекундах, с выводом UTC, ISO 8601 и локального времени рядом друг с другом.

  • Файлы никогда не покидают ваше устройство
  • Бесплатно, без регистрации
  • Без водяных знаков
  • Работает офлайн после загрузки
Loading tool…

Как пользоваться: конвертер меток времени

  1. 1

    Вставьте метку времени или выберите дату

    Секунды и миллисекунды определяются автоматически.

  2. 2

    Смотрите все форматы

    Показываются UTC, ISO 8601, локальное время и относительное время.

  3. 3

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

    Каждый формат копируется одним кликом.

Почему почти все системы считают время именно так

Метка времени Unix — это просто количество секунд, прошедших с полуночи UTC 1 января 1970 года: произвольная точка отсчёта, выбранная десятилетия назад, которая с тех пор стала практически универсальным способом представления момента времени внутри компьютерной системы. Привлекательность в том, что дата и время сводятся к одному легко сравниваемому и легко хранимому целому числу: проверка того, что один момент раньше другого, — это простое числовое сравнение, а не календарное вычисление, а хранение занимает фиксированный, предсказуемый объём места независимо от того, к какому веку относится дата. Именно поэтому она лежит в основе всего — от столбцов времени в базах данных до ответов API и записей в лог-файлах, — хотя само по себе число ничего не говорит человеку, смотрящему на него напрямую, что и есть вся причина существования такого конвертера.

Как с первого взгляда отличить секунды от миллисекунд

Метка времени Unix, представляющая текущий момент в секундах, состоит из десяти цифр, а тот же самый момент, выраженный в миллисекундах, — из тринадцати: три дополнительные цифры для точности до тысячных долей секунды. Эта разница в длине — быстрый и надёжный способ определить, в какой единице измерена данная цифра, и она же объясняет два самых частых и самых запутанных сценария ошибок при неверном предположении. Передача значения в миллисекундах коду, ожидающему секунды, умножает видимую дату примерно на тысячу, и она оказывается где-то в 55000 году — эффектно и очевидно неправильно. Передача значения в секундах коду, ожидающему миллисекунды, делает обратное: реальное прошедшее время делится примерно на тысячу, из-за чего интерпретируемая дата оказывается где-то в 1970 году — достаточно близко к правдоподобной дате, чтобы иногда её принимали за настоящую ошибку где-то ещё, а не за несовпадение единиц измерения.

Почему UTC — для хранения, а локальное время — для экрана

Необработанная метка времени Unix вообще не несёт информации о часовом поясе — это просто счётчик прошедших секунд, одинаковый в любой точке Земли в данный момент, — и именно момент преобразования её в читаемую дату это то место, где для отображения приходится выбирать часовой пояс. Хранение и логирование событий в UTC (или в виде самой необработанной метки времени, которая по определению не зависит от часового пояса) означает, что каждая запись в системе означает ровно один и тот же момент независимо от того, в каком часовом поясе находится сервер, база данных или человек, читающий лог. Преобразование в локальное время — это решение уровня отображения, принимаемое только тогда, когда на значение действительно смотрит человек, поэтому этот инструмент чётко разделяет их: UTC и ISO 8601 — значения, которые стоит хранить и сравнивать, локальное время — версия, которую стоит читать.

Проблема 2038 года и почему она не затронет этот инструмент

Значительная часть более старой инфраструктуры — устаревший код на C, некоторые встроенные системы, определённые старые типы столбцов баз данных — хранит метку времени Unix в знаковом 32-битном целом числе, у которого есть жёсткий предел: оно переполняется в 03:14:07 UTC 19 января 2038 года и переходит к дате в 1901 году — ошибка той же природы, что и проблема Y2K, но коренящаяся в ограничениях двоичных целых чисел, а не в двузначных годах. JavaScript представляет числа как 64-битные значения с плавающей точкой, у которых запас гораздо больше и которые не подвержены именно этому переполнению, поэтому метка времени, вычисленная в этом инструменте, не затронута — проблема касается той системы, которая изначально создала конвертируемую метку времени, а не самого преобразования, происходящего здесь.

Часто задаваемые вопросы

Моя метка времени в секундах или миллисекундах?

Инструмент определяет это сам. Текущая метка времени Unix в секундах состоит из 10 цифр, в миллисекундах — из 13. Если дата получается в 1970 году, вы передали миллисекунды вместо секунд; если дата попадает в 55000 год — наоборот.

Что такое эпоха Unix?

Полночь UTC 1 января 1970 года — нулевая точка, от которой отсчитывает время почти каждая система. Отрицательные метки времени валидны и означают даты до этой точки — инструмент их корректно обрабатывает.

Что такое проблема 2038 года?

Системы, хранящие Unix-время в знаковом 32-битном целом числе, переполняются 19 января 2038 года и переходят к 1901 году. JavaScript использует 64-битные числа с плавающей точкой, поэтому этот инструмент не затронут, но устаревший код на C и старые столбцы баз данных — затронуты.

Какой часовой пояс подразумевается под «локальным временем»?

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

Частые задачи: конвертер меток времени