Преобразование временных меток Unix в удобочитаемые даты.
Разработчики, администраторы баз данных и все, кто работает с файлами журналов или API, регулярно сталкиваются с метками времени Unix — длинными числами, такими как 1700000000, которые представляют момент времени. Без конвертера эти цифры бессмысленны для большинства людей. Этот инструмент мгновенно преобразует любую временную метку Unix в читаемую дату и время, а также преобразует любую дату обратно в ее временную метку Unix.
Что такое временная метка Unix?
Временная метка Unix подсчитывает количество секунд, прошедших с полуночи 1 января 1970 года по всемирному координированному времени (UTC). Этот момент, названный эпохой Unix, был выбран в качестве точки отсчета при разработке операционных систем Unix. Каждая прошедшая секунда добавляет единицу к счету. Временная метка 0 представляет собой ровно полночь 1 января 1970 года по всемирному координированному времени. Временная метка 1700000000 соответствует 14 ноября 2023 года в 22:13:20 UTC.
Прелесть временных меток Unix в том, что они не зависят от часового пояса. Временная метка представляет собой один и тот же момент времени, независимо от того, в какой точке мира вы находитесь. При преобразовании в местное время одна и та же временная метка дает разные показания часов в Токио и Нью-Йорке, но они относятся к одному и тому же физическому моменту.
Как использовать конвертер
Чтобы преобразовать временную метку в дату, вставьте номер временной метки в верхнее поле. Дата и время UTC, а также местный эквивалент отображаются сразу. Чтобы преобразовать дату в метку времени, используйте средство выбора даты в нижней части, и соответствующая метка времени появится мгновенно.
Миллисекунды против секунд
Некоторые системы, особенно веб-браузеры и приложения JavaScript, используют для своих временных меток миллисекунды, а не секунды. Вызов Date.now() в JavaScript возвращает что-то вроде 1700000000000 — число примерно в 1000 раз больше, чем эквивалентная временная метка Unix в секундах. Если у вас есть число примерно из тринадцати цифр, вероятно, оно выражено в миллисекундах: разделите его на 1000 и введите результат.
Проблема 2038 года
Ранние системы Unix хранили временные метки в виде 32-битных целых чисел со знаком, которые могли содержать значения до 2 147 483 647. Это максимальное значение соответствует 19 января 2038 года в 03:14:07 UTC. Системы, которые хранят временные метки в 32-битных целых числах, в этот день переполнятся — проблема, которую иногда называют Y2K38. Современные 64-битные системы могут хранить временные метки далеко за пределами 292 миллиардов лет, что делает эту проблему только для устаревшего программного обеспечения, которое не обновлялось.
Обычное использование
Временные метки появляются в файлах журналов, записях базы данных, ответах API, заголовках кэша, криптографических сертификатах и множестве других контекстов. Преобразование их в читаемые даты помогает при отладке, анализе данных, аудите соответствия и в любой ситуации, когда вам нужно понять, когда что-то произошло.
Почему 1970 год был выбран в качестве отправной точки
Выбор 1 января 1970 года был по существу практическим, а не значимой датой сам по себе. Unix разрабатывалась в конце 1960-х и начале 1970-х годов в Bell Labs, и разработчикам требовалась достаточно свежая точка отсчета, чтобы цифры были управляемыми, но достаточно ранние, чтобы охватить вероятный срок службы операционной системы. Округление до начала 1970 года было просто удобным. Спустя десятилетия этот произвольный выбор глубоко укоренился: он лежит в основе того, как почти каждый язык программирования, база данных и операционная система внутренне представляют время, хотя большинству программистов никогда не приходится думать об этом напрямую.
Чтение временной метки без конвертера
Немного попрактиковавшись, вы сможете проверить в уме временную метку. Деление на 31 536 000 (количество секунд в обычном году) дает примерное количество лет с 1970 года — десятизначная временная метка, начинающаяся с 1,7, соответствует примерно 2023 году, например, с 1970 года плюс около 53-54 лет. Эта приблизительная мысленная оценка — полезный способ обнаружить явно неверную временную метку, например, отклоняющуюся в 1000 раз, потому что на самом деле она была в миллисекундах, прежде чем вы даже доберетесь до калькулятора.
Отрицательные временные метки
Поскольку временная метка Unix представляет собой просто знак секунды от эпохи, даты до 1 января 1970 года представляются как отрицательные числа, а не являются неподдерживаемыми. Например, временная метка -86400 соответствует ровно одному дню до начала эпохи: 31 декабря 1969 года. Этот преобразователь обрабатывает отрицательные значения так же, как и положительные, что полезно для работы с историческими записями или данными, которые предшествовали компьютерной эпохе, но все еще хранятся в форме временной метки Unix.
Почему временные метки не зависят от часового пояса
Единственное самое большое преимущество хранения момента в виде временной метки Unix, а не в виде форматированной строки даты, заключается в том, что он полностью игнорирует часовые пояса во время хранения и вычислений. Временная метка представляет собой ровно один физический момент и переводится в дату и время местного календаря только в тот момент, когда она отображается человеку. Вот почему базы данных, API и файлы журналов в подавляющем большинстве хранят временные метки, а не предварительно отформатированные локальные даты: два сервера в разных часовых поясах могут с полной уверенностью сравнивать, сортировать и вычислять различия между временными метками, и им нужно только преобразовать в удобочитаемое местное время на самом последнем этапе, точно так же, как это делает этот конвертер, когда он показывает одновременно UTC и ваш местный эквивалент.
Отладка с метками времени
Разработчики постоянно используют такой конвертер во время отладки. Журнал ошибок сервера с пометкой 1700000000 на первый взгляд бессмысленен, но его преобразование мгновенно сообщает вам, произошла ли ошибка в рабочее время, ночью или в тот самый момент, когда было завершено развертывание — часто это самый быстрый способ сопоставить отчет об ошибке с изменением, которое его вызвало. Ответы API, столбцы аудита базы данных и заголовки истечения срока действия кэша обычно хранят метки времени, а не форматированные даты по той же причине, по которой механизмы хранения предпочитают их: простое число правильно сортирует, сравнивает и вычисляет без двусмысленности языкового стандарта или формата, и его требуется только перевести в удобную для человека дату на последнем этапе отображения, что и делает этот инструмент.
Частный
Все выполняется в вашем браузере с использованием встроенного в JavaScript объекта Date, поэтому преобразование происходит мгновенно в обоих направлениях, и никакая введенная вами метка времени или дата никогда не отправляется на сервер, не регистрируется и не передается.
Часто задаваемые вопросы о временных метках Unix
- Что такое временная метка Unix?
- Временная метка Unix — это число, обозначающее количество секунд, прошедших с 1 января 1970 года в 00:00:00 UTC (эпоха Unix). Он повсеместно используется в вычислениях для представления моментов времени без двусмысленности часового пояса.
- В чем проблема 2038 года?
- Старые системы, которые хранят временные метки Unix в виде 32-битных целых чисел со знаком, могут представлять даты только до 19 января 2038 года. Современные 64-битные системы не имеют этого ограничения.
- Как мне преобразовать миллисекунды?
- Некоторые системы используют миллисекунды вместо секунд. Разделите метку времени в миллисекундах на 1000, чтобы преобразовать ее в секунды, прежде чем вводить ее здесь.