Найти тему
takoedelo

Что такое Unix Time и когда была эпоха Unix?

Оглавление

Unix time - это система, используемая компьютерами для измерения времени. Но как работает время Unix? А что такое "Эпоха Unix"?

Почему Unix имеет свою собственную концепцию времени? Что такое эпоха и в чем проблема Y2038?

Unix time - это средство представления определенной даты и времени, используемое Linux, macOS и многими другими совместимыми системами. Это настолько широко распространено, что вы, вероятно, используете его, не осознавая этого. Однако, как только вы поймете время Unix, вы заметите его во многих контекстах. Несколько инструментов могут помочь вам работать с Unix time.

Какова цель времени Unix?

Время Unix - это общее количество секунд с момента фиксированного времени и даты. Это формат даты / времени (или метки времени), который отличается от удобочитаемых дат и времени, к которым мы привыкли. Это чисто по соображениям эффективности. Для хранения одного числа, представляющего секунды, требуется гораздо меньше места, чем для хранения отдельных значений года, месяца, часа и т. Д.

Конечно, в современных терминах разница в пространстве не так уж велика. Но учтите, что Unix возник в конце 1960-х годов, когда доступное хранилище было намного меньше. Например, каждый файл имеет три временные метки, связанные с ним.

Формат практически невозможно перевести в вашей голове, если вы не математический гений. Но у него все еще есть некоторые преимущества перед более удобочитаемыми альтернативами, такими как Wed, 21 Oct 2015 07:28:00 GMT. Также обычно быстрее определить разницу между двумя временными метками. Это особенно верно для дат, близких друг к другу.

-2

Об Эпохе

Итак, время Unix - это общее количество секунд с определенного момента времени. Но что это за момент времени? Это 00:00:00 UTC 1 января 1970года. Это часто называют эпохой Unix. Программисты выбрали эту дату для эпохи из удобства, так как это была ближайшая круглая дата, когда они изобрели время Unix.

Возможно, вы видели эту дату, когда что-то пошло не так. Это явно ошибка, но она выглядит очень странно, когда она приводит к дате до того, как многие из нас родились! Однако это вполне понятно, когда вы знаете о времени Unix. Если какая-либо система пытается отобразить метку времени, которая не имеет никакого значения, она часто переводится в 0 и приводит к точной дате эпохи.

Формат данных времени Unix

Строго говоря, их нет. Исходный тип данных был 32-битным целым числом, и это часто остается таковым даже в гораздо более мощных системах.

Этот тип данных позволяет хранить значение в общей сложности 2 ^ 32 секунды, что составляет чуть более 136 лет. Это значение обычно подписывается, что означает, что оно может быть отрицательным или положительным. Таким образом, он обычно представляет 68 лет по обе стороны от эпохи, т.е. 1902-2038.

Это все еще ограниченный период, конечно. Но основное использование формата метки времени было для таких понятий, как модификация файла. Была очень большая потребность представлять время, близкое к настоящему, а не древнюю историю или далекое будущее. Даже для таких приложений, как календари, редко возникает необходимость представлять даты более чем на несколько десятилетий вперед.

Но это не значит, что этот ограниченный промежуток времени без проблем…

Проблема 2038 года

Ошибка Y2K (одна из худших ошибок программирования в истории) повлияла на компьютерные системы, которые хранили годы в виде двузначных значений. Когда наступил 2000 год, такие системы относились к нему так, как если бы это был 1900 год. В данном случае это было не так катастрофично, как опасались, главным образом потому, что многие люди заранее тратили много времени и сил, готовясь к этому.

Если бы вы обратили внимание в предыдущем разделе, вы могли бы заметить аналогичную проблему, которая может повлиять на время Unix. Ну, у времени Unix есть своя проблема с данными: проблема Y2k38. (Это часто называют проблемой, а не ошибкой; возможно, мы стали более оптимистичными с 2000 года!) Когда время Unix буквально заканчивается в 2038 году, системы будут рассматривать новые даты либо как 1902, либо как 1970. Или, возможно, они просто отключатся.

По крайней мере, эта проблема не ударит нас в полночь в канун Нового года. Последняя секунда 32-битного времени Unix придется на 19 марта. В случае, мы, вероятно, обновим большинство систем к 2038 году, или они все равно устареют к тому времени.

Некоторые полезные ресурсы временных меток

Сайт Epoch Converter, возможно, является наиболее полным конвертером меток времени. Он начинается с отображения текущего времени Unix — в режиме реального времени — и добавляет почти все мыслимые функции поверх этого. Его основное использование - преобразование между временными метками и удобочитаемыми датами в обоих направлениях.

Использование времени Unix с инструментами командной строки

В Linux и macOS программа date является основной утилитой для работы с датой / временем, включая временные метки Unix. Вызывается без каких-либо аргументов, возвращает текущую дату / время в удобочитаемом формате:

-3

Если вам нужна текущая дата / время в Unix time, используйте аргумент +%s:

-4

Понимание времени Unix

Время Unix - это простая концепция, которая возникает во многих местах. Как только вы поймете это, вы можете найти это весьма полезным, например, при расчете разницы во времени. Вы также можете распознать, когда это может быть причиной определенных ошибок.

Такие понятия, как эпоха и временные метки, являются важной частью начала работы с Linux.