Что такое время Unix?

Время Unix (также называемое эпохой Unix или меткой времени POSIX) отсчитывает время с 00:00:00 UTC 1 января 1970 года. Разные системы используют разные единицы измерения: оболочки Unix, PHP и большинство баз данных используют секунды, JavaScript и Java — миллисекунды, time.time_ns() в Python, Go и InfluxDB поддерживают наносекунды, а многие инструменты трассировки и журналирования используют микросекунды. Один и тот же момент времени представлен как 1700000000 в секундах и 1700000000000000000 в наносекундах, поэтому ошибка в единице измерения смещает дату на тысячи лет.

Описание инструмента

Этот инструмент преобразует метку времени Unix между секундами, миллисекундами, микросекундами и наносекундами и показывает соответствующую дату. Вставьте метку времени — единица измерения будет определена по её длине, либо выберите единицу вручную. Каждое преобразование выполняется точно, включая метки времени в наносекундах, которые слишком велики для обычного числа JavaScript.

Возможности

  • Преобразование между секундами, миллисекундами, микросекундами и наносекундами за один шаг
  • Определение единицы измерения по количеству цифр или возможность выбрать её вручную
  • Сохранение полной точности без ошибок округления, даже для 19-значных значений в наносекундах
  • Поддержка дробных значений (1700000000.123), отрицательных значений для дат до 1970 года и экспоненциальной записи (1.7e9)
  • Необязательный вывод целых чисел для API, ожидающих целые значения
  • Отображение даты в формате ISO 8601 по UTC с точностью до наносекунд, а также в вашем местном часовом поясе
  • Возможность скрыть поля микросекунд и наносекунд, если они вам не нужны

Как это работает

Метка времени считывается как точное десятичное число и сохраняется в виде целого количества наносекунд с использованием целых чисел произвольной точности вместо чисел с плавающей точкой. При выводе это значение делится на размер соответствующей единицы, после чего записывается точный результат, поэтому преобразование миллисекунд в секунды даёт 1700000000.123, а не округлённое значение. При включённой настройке «Только целые числа» результат округляется вниз до единицы, к которой он относится. Так же время Unix обрабатывает даты до 1970 года: -1.5 секунды превращаются в -2.

Если единица измерения определяется автоматически, инструмент предполагает дату в диапазоне с 1973 по 5138 год: значения длиной до 11 цифр считываются как секунды, от 12 до 14 цифр — как миллисекунды, от 15 до 17 — как микросекунды, а значения длиной 18 и более цифр — как наносекунды.

Советы

  • Определение по длине не позволяет отличить короткие значения друг от друга, например метку времени в миллисекундах для даты до марта 1973 года от метки времени в секундах. Если дата выглядит неправильно, выберите единицу входного значения вручную.
  • Кнопка «Сейчас» подставляет текущее время в используемой единице измерения. Браузеры предоставляют время только с точностью до миллисекунд, поэтому последние цифры значений в микросекундах и наносекундах будут нулевыми.
  • Пробелы и символы подчёркивания во входных данных игнорируются, поэтому можно вставлять значения вроде 1_700_000_000.