stringtranslate.com

Unix-время

Текущее время Unix
1707336264( обновление )
2024-02-07T20:04:24+00:00
Время Юникса прошло1 000 000 000 секунд на 2001-09-09T01:46:40Z. [1] Это событие отмечалось в Копенгагене, Дания, на вечеринке, организованной датской группой пользователей UNIX в 03:46:40 по местному времени.

Время Unix [a] — это представление даты и времени, широко используемое в вычислениях . Он измеряет время по количеству невисокосных секунд , прошедших с 00:00:00 UTC 1 января 1970 года, эпохи Unix . В современных вычислениях значения иногда хранятся с более высокой степенью детализации , например, в микросекундах или наносекундах .

Время Unix возникло как системное время операционных систем Unix . Он стал широко использоваться в других компьютерных операционных системах , файловых системах , языках программирования и базах данных .

Определение

Время Unix в настоящее время определяется как количество невисокосных секунд, прошедших с 00:00:00  UTC в четверг, 1 января 1970 года, что называется эпохой Unix . [3] Время в Unix обычно кодируется как целое число со знаком .

Время Unix0 — это ровно полночь по всемирному координированному времени 1 января 1970 года, при этом время Unix увеличивается на 1 за каждую невисокосную секунду после этого. Например, 00:00:00  UTC 1 января 1971 года представлено по времени Unix как31 536 000 . Отрицательные значения в системах, которые их поддерживают, указывают время до начала эпохи Unix, причем значение уменьшается на 1 за каждую невисокосную секунду перед эпохой. Например, 00:00:00  UTC 1 января 1969 года представлено по времени Unix как−31 536 000 . Каждый день в Unix-времени состоит ровно из86 400 секунд.

Время Unix иногда называют временем эпохи . Это может ввести в заблуждение, поскольку время Unix — не единственная система времени, основанная на эпохе, а эпоха Unix — не единственная эпоха, используемая другими системами времени. [5]

Дополнительные секунды

Время Unix отличается как от всемирного координированного времени (UTC), так и от международного атомного времени (TAI) обработкой дополнительных секунд . UTC включает дополнительные секунды, которые корректируют несоответствие между точным временем, измеренным атомными часами , и солнечным временем , связанным с положением Земли по отношению к Солнцу. Международное атомное время (TAI), по которому каждый день соответствует точному времени.86 длиной 400 секунд, игнорирует солнечное время и постепенно теряет синхронизацию с вращением Земли со скоростью примерно одну секунду в год. Во времени Unix каждый день содержит ровно86 400 секунд. Каждая дополнительная секунда использует временную метку секунды, которая непосредственно предшествует ей или следует за ней. [3]

В обычный день UTC, продолжительность которого составляет86 400 секунд, число времени Unix непрерывно меняется в полночь. Например, в конце дня, использованного в приведенных выше примерах, представления времени развиваются следующим образом:

Когда возникает високосная секунда , день UTC не совсем соответствует86 400 секунд и число времени Unix (которое всегда увеличивается ровно на86 400 каждый день) наблюдается разрыв . Дополнительные секунды могут быть положительными или отрицательными. Никакая отрицательная дополнительная секунда никогда не объявлялась, но если бы она была объявлена, то в конце дня с отрицательной дополнительной секундой число времени Unix подскочило бы на 1 к началу следующего дня. Во время положительной дополнительной секунды в конце дня, которая происходит в среднем каждые полтора года, число времени Unix непрерывно увеличивается до следующего дня в течение дополнительной секунды, а затем в конце дополнительной секунды возвращается на 1. (возвращаясь к началу следующего дня). Например, вот что произошло в системах, строго соответствующих POSIX.1, в конце 1998 года:

Числа времени Unix повторяются сразу после положительной дополнительной секунды. Число времени UnixТаким образом, число 1 483 142 400 неоднозначно: оно может относиться либо к началу дополнительной секунды (2016-12-31 23:59:60), либо к ее концу, на одну секунду позже (2017-01-01 00:00:00). ). В теоретическом случае, когда возникает отрицательная дополнительная секунда, никакой двусмысленности не возникает, а вместо этого существует диапазон чисел времени Unix, которые вообще не относятся ни к какой точке времени UTC.

Часы Unix часто реализуются с другим типом обработки положительной дополнительной секунды, связанной с протоколом сетевого времени (NTP). В результате получается система, не соответствующая стандарту POSIX. Подробности см. в разделе ниже, посвященном NTP.

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

Число времени Unix легко преобразовать обратно во время UTC, взяв частное и модуль числа времени Unix по модулю.86 400 . Частное — это количество дней, прошедших с эпохи, а модуль — это количество секунд с полуночи по всемирному координированному времени в этот день. Если задано число времени Unix, которое неоднозначно из-за положительной дополнительной секунды, этот алгоритм интерпретирует его как время сразу после полуночи. Он никогда не генерирует время, находящееся в пределах дополнительной секунды. Если задано число времени Unix, которое является недопустимым из-за отрицательной дополнительной секунды, оно генерирует столь же недопустимое время UTC. Если эти условия существенны, необходимо свериться с таблицей високосных секунд, чтобы обнаружить их.

Вариант на основе несинхронного протокола сетевого времени

Обычно часы Unix в стиле Миллса реализуются с обработкой секунды координации, не синхронной с изменением номера времени Unix. Число времени сначала уменьшается там, где должен был произойти скачок, а затем увеличивается до правильного времени через 1 секунду после скачка. Это упрощает реализацию и описано в статье Миллса. [6] Вот что происходит через положительную дополнительную секунду:

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

Аналогичная ситуация возникает с отрицательной дополнительной секундой, когда пропущенная секунда немного запаздывает. Очень кратко система показывает номинально невозможное число времени, но это можно обнаружить по состоянию TIME_DEL и исправить.

В системах этого типа число времени Unix нарушает POSIX в отношении обоих типов дополнительных секунд. Сбор переменной состояния секунды координации вместе с номером времени обеспечивает однозначное декодирование, поэтому при желании можно сгенерировать правильный номер времени POSIX или сохранить полное время UTC в более подходящем формате.

Логика декодирования, необходимая для работы с часами Unix этого типа, также будет правильно декодировать гипотетические часы, соответствующие POSIX, с использованием того же интерфейса. Этого можно достичь, указав состояние TIME_INS в течение всей вставленной дополнительной секунды, а затем указав TIME_WAIT в течение всей следующей секунды, повторяя отсчет секунд. Это требует синхронной обработки секунды координации. Вероятно, это лучший способ выразить время UTC в форме часов Unix через интерфейс Unix, когда базовые часы принципиально не подвержены високосным секундам.

Вариант, учитывающий високосные секунды.

Другой, гораздо более редкий и несоответствующий вариант учета времени в Unix включает увеличение значения всех секунд, включая дополнительные секунды; [7] Некоторые системы Linux настроены таким образом. [8] Время, сохраняемое таким образом, иногда называют «TAI» (хотя метки времени могут быть преобразованы в UTC, если значение соответствует времени, когда известна разница между TAI и UTC), в отличие от «UTC» ( хотя не все значения времени UTC имеют уникальную ссылку в системах, которые не учитывают дополнительные секунды). [8]

Поскольку в TAI нет дополнительных секунд, а длина каждого дня TAI составляет ровно 86400 секунд, эта кодировка на самом деле представляет собой чистый линейный отсчет секунд, прошедших с 1970-01-01T00:00:10  TAI. Это значительно упрощает арифметику временных интервалов. Значения времени из этих систем не страдают от двусмысленности, которая свойственна строго соответствующим системам POSIX или системам, управляемым NTP.

В этих системах необходимо свериться с таблицей дополнительных секунд, чтобы правильно преобразовать время в формате UTC и представление псевдо-Unix-времени. Это похоже на то, как необходимо обращаться к таблицам часовых поясов для перехода на гражданское время и обратно ; База данных часовых поясов IANA включает информацию о секундах координации, а пример кода, доступный из того же источника, использует эту информацию для преобразования между отметками времени на основе TAI и местным временем. Преобразование также сталкивается с проблемами определений до введения в 1972 году нынешней формы UTC (см. раздел «Основы UTC» ниже).

Эта система, несмотря на внешнее сходство, не является эпохой Unix. Он кодирует время со значениями, которые на несколько секунд отличаются от значений времени POSIX. Версия этой системы, в которой эпоха была 1970-01-01T00:00:00  TAI, а не 1970-01-01T00:00:10  TAI, была предложена для включения в ISO C time.h, но в ISO была принята только часть UTC. 2011. [9]tai_clock Однако A существует в C++20.

Представление числа

Число времени Unix может быть представлено в любой форме, допускающей представление чисел. В некоторых приложениях число просто представляется в текстовом виде в виде строки десятичных цифр, что вызывает лишь тривиальные дополнительные проблемы. Однако некоторые двоичные представления времени Unix особенно важны.

Тип данных Unix time_t, представляющий момент времени, на многих платформах представляет собой целое число со знаком , традиционно состоящее из 32 бит (но см. ниже), непосредственно кодирующее число времени Unix, как описано в предыдущем разделе. 32-битное значение со знаком охватывает примерно 68 лет до и после эпохи 1970-01-01. Минимальная представимая дата — пятница 13 декабря 1901 г., а максимальная представимая дата — вторник 19 января 2038 г. Через одну секунду после 03:14:07 UTC 19 января 2038 года это представление переполнится , что приведет к так называемой проблеме 2038 года .  

В некоторых новых операционных системах time_tразрядность расширена до 64 бит. Это расширяет представимые времена примерно на 292 миллиарда лет в обоих направлениях, что более чем в двадцать раз превышает нынешний возраст Вселенной .

Первоначально существовали некоторые разногласия по поводу того, должна ли Unix time_tбыть подписанной или неподписанной. Если он без знака, его диапазон в будущем будет увеличен вдвое, что отложит 32-битное переполнение (на 68 лет). Однако тогда он был бы неспособен отображать времена, предшествовавшие эпохе. Консенсус подлежит time_tподписанию, и это обычная практика. Платформа разработки программного обеспечения для версии 6 операционной системы QNX имеет беззнаковый 32-битный тип time_t, хотя в более старых версиях использовался знаковый тип.

Спецификации POSIX и Open Group Unix включают стандартную библиотеку C , которая включает типы времени и функции, определенные в заголовочном файле. Стандарт ISO C утверждает, что это должен быть арифметический тип, но не требует для него какого-либо конкретного типа или кодировки. POSIX требует , чтобы это был целочисленный тип, но не требует, чтобы он был знаковым или беззнаковым.<time.h>time_ttime_t

В Unix нет традиции прямого представления нецелых чисел времени Unix в виде двоичных дробей. Вместо этого время с точностью до секунды представляется с использованием составных типов данных , состоящих из двух целых чисел, первое из которых представляет собой a time_t(целая часть времени Unix), а второе — дробную часть числа времени в миллионных долях (в struct timeval). или миллиардные доли (в struct timespec). [10] [11] Эти структуры обеспечивают десятичный формат данных с фиксированной запятой , который полезен для некоторых приложений и прост в преобразовании для других.

Базис UTC

Нынешняя форма UTC с дополнительными секундами определяется только начиная с 1 января 1972 года. До этого, с 1 января 1961 года, существовала более старая форма UTC, в которой не только были случайные временные шаги, которые были нецелыми числами. числа секунд, но также секунда UTC была немного длиннее секунды SI и периодически менялась, чтобы постоянно аппроксимировать вращение Земли. До 1961 года не было UTC, а до 1958 года не было широко распространенного атомного хронометража ; в эти эпохи вместо атомной шкалы времени использовалась некоторая аппроксимация GMT (основанная непосредственно на вращении Земли). [ нужна цитата ]

Точное определение времени Unix как кодировки UTC является бесспорным только применительно к нынешней форме UTC. Эпоха Unix, предшествовавшая появлению этой формы UTC, не влияет на ее использование в эту эпоху: количество дней с 1 января 1970 года (эпоха Unix) по 1 января 1972 года (начало UTC) не подлежит сомнению, а количество дней — это все, что имеет значение для времени Unix.

Значение значений времени Unix ниже+63 072 000 (т.е. до 1 января 1972 г.) точно не определено. Основу такого времени Unix лучше всего понимать как неопределенное приближение к UTC. Компьютеры той эпохи редко имели достаточно точные настройки часов, чтобы обеспечить значимые временные метки с точностью до секунды. Время Unix не является подходящим способом представления времени до 1972 года в приложениях, требующих точности до доли секунды; такие приложения должны, по крайней мере, определять, какую форму UT или GMT они используют.

С 2009 года рассматривается возможность прекращения использования дополнительных секунд в гражданском времени. [12] Вероятным способом выполнения этого изменения является определение новой шкалы времени, называемой международным временем [ нужна цитация ] , которая первоначально соответствует UTC, но после этого не имеет дополнительных секунд, таким образом оставаясь с постоянным смещением от TAI. Если это произойдет, вполне вероятно, что время Unix будет в перспективе определяться в рамках этой новой шкалы времени, а не в формате UTC. Неопределенность относительно того, произойдет ли это, делает будущее время Unix не менее предсказуемым, чем оно есть сейчас: если бы у UTC просто не было дополнительных дополнительных секунд, результат был бы таким же.

История

Самые ранние версии времени Unix имели 32-битное целое число, увеличивающееся со скоростью 60  Гц , что было частотой системных часов на оборудовании ранних систем Unix. Временные метки, хранящиеся таким образом, могут представлять собой диапазон чуть более двух с четвертью лет. Эпоха, от которой ведется отсчет, была изменена в выпусках Unix, чтобы предотвратить переполнение: полночь 1 января 1971 года и 1 января 1972 года использовались в качестве эпох на ранней стадии разработки Unix. В ранних определениях времени Unix также не было часовых поясов. [13] [14]

Текущая эпоха 1 января 1970 года 00:00:00 UTC была выбрана инженерами Unix произвольно, поскольку считалась удобной датой для работы. Точность была изменена на счет в секундах, чтобы избежать кратковременного переполнения. [1]

Когда был написан POSIX.1 , возник вопрос о том, как точно определить time_tвисокосные секунды. Комитет POSIX рассмотрел вопрос о том, должно ли время Unix оставаться, как предполагалось, линейным отсчетом секунд с начала эпохи, за счет сложности преобразований с гражданским временем или представления гражданского времени, за счет несогласованности вокруг дополнительных секунд. Компьютерные часы той эпохи не были настроены достаточно точно, чтобы тем или иным образом создать прецедент.

Комитет POSIX был под влиянием аргументов против сложности библиотечных функций и четко определил время Unix в простой форме с точки зрения элементов времени UTC. Это определение было настолько простым, что оно даже не охватывало все правило високосного года григорианского календаря и делало 2100 год високосным.

В выпуске POSIX.1 2001 года было исправлено ошибочное правило високосного года в определении времени Unix, но сохранилось основное определение времени Unix как кодировки UTC, а не линейной шкалы времени. С середины 1990-х годов компьютерные часы регулярно устанавливались с достаточной точностью, чтобы это имело значение, и чаще всего они устанавливались с использованием определения времени Unix на основе UTC. Это привело к значительной сложности в реализациях Unix и в протоколе сетевого времени для выполнения шагов в номере времени Unix всякий раз, когда возникают високосные секунды. [ нужна цитата ]

Применение

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

Стандартная библиотека C использует время Unix для всех функций даты и времени, а время Unix иногда называют time_t — именем типа данных , используемым для меток времени в C и C++ . Функции времени Unix языка C определены как API системного времени в спецификации POSIX . [15] Стандартная библиотека C широко используется во всех современных настольных операционных системах, включая Microsoft Windows и Unix-подобные системы, такие как macOS и Linux , где она является стандартным интерфейсом программирования. [16] [17] [18]

iOS предоставляет Swift API, который по умолчанию использует эпоху 1 января 2001 года, но также может использоваться с временными метками Unix. [19] Android использует время Unix вместе с часовым поясом для своего API системного времени. [20]

Windows не использует время Unix для внутреннего хранения времени, но использует его в системных API, которые предоставляются на C++ и реализуют спецификацию стандартной библиотеки C. [16] Время Unix используется в формате PE для исполняемых файлов Windows. [21]

Время Unix обычно доступно в основных языках программирования и широко используется в программировании настольных, мобильных и веб-приложений. Java предоставляет объект Instant, который содержит временную метку Unix как в секундах, так и в наносекундах. [22] Python предоставляет библиотеку времени, которая использует время Unix. [23] JavaScript предоставляет библиотеку дат, которая предоставляет и хранит временные метки в миллисекундах, начиная с эпохи Unix, и реализована во всех современных настольных и мобильных веб-браузерах , а также в серверных средах JavaScript, таких как Node.js. [24]

Файловые системы, предназначенные для использования с операционными системами на базе Unix, обычно используют время Unix. APFS , файловая система, используемая по умолчанию на всех устройствах Apple, и ext4 , которая широко используется на устройствах Linux и Android, используют время Unix в наносекундах для отметок времени файла. [25] [26] Некоторые форматы архивных файлов могут хранить временные метки в формате Unix, включая RAR и tar . [27] [28] Время Unix также часто используется для хранения временных меток в базах данных, в том числе в MySQL и PostgreSQL . [29] [30]

Ограничения

Время Unix было разработано для компактного кодирования календарных дат и времени и предназначено для внутреннего использования компьютерами. Он не предназначен для легкого чтения людьми или для хранения значений, зависящих от часового пояса. По умолчанию он также ограничен представлением времени в секундах, что делает его непригодным для использования, когда требуется более точное измерение времени, например, при измерении времени выполнения программ. [31]

Диапазон представимых времен

Анимированное изображение переполнения времени 32-битной Unix, которое произойдет в 2038 году.

Время Unix по своей природе не требует определенного размера хранилища, но в наиболее распространенных реализациях времени Unix используется целое число со знаком с размером слова базового компьютера. Поскольку большинство современных компьютеров являются 32-битными или 64-битными , а большое количество программ по-прежнему написано в 32-битном режиме совместимости, это означает, что многие программы, использующие время Unix, используют подписанные 32-битные целочисленные поля. Максимальное значение 32-битного целого числа со знаком равно 2 31 -1, а минимальное значение - (2 31 ), что делает невозможным представление дат до 13 декабря 1901 года (в 20:45:52 UTC) или после 19 января 2038 года. (в 03:14:07 UTC). Раннее отключение может повлиять на базы данных, в которых хранится историческая информация; в некоторых базах данных, где для временных меток используется 32-битное время Unix, может потребоваться хранить время в поле другой формы, например в строке, для представления дат до 1901 года. Позднее отсечение известно как проблема 2038 года и может вызвать проблемы по мере приближения даты, поскольку даты, выходящие за пределы 2038 года, вернутся к началу представимого диапазона в 1901 году. [31] : 60 

Ограничения диапазона дат не являются проблемой для 64-битных представлений времени Unix, поскольку эффективный диапазон дат, которые можно представить с помощью времени Unix, хранящегося в 64-битном целом со знаком, составляет более 584 миллиардов лет, или 292 миллиарда лет в любом направлении от 1970 года. эпоха. [31] : 60-61  [32]

Альтернативы

Время Unix — не единственный стандарт времени, отсчитываемый от эпохи. В Windows этот FILETIMEтип хранит время как количество 100-наносекундных интервалов, прошедших с 0:00 по Гринвичу 1 января 1601 года. [33] Время эпохи Windows используется для хранения меток времени для файлов [34] и в таких протоколах, как Служба времени Active Directory [35] и блок сообщений сервера .

Протокол сетевого времени , используемый для координации времени между компьютерами, использует эпоху 1 января 1900 года, рассчитываемую 32-битным целым числом без знака для секунд и другим 32-битным целым числом без знака для дробных секунд, которое повторяется каждые 2 32 секунды (примерно один раз в 136 лет). [36]

Многие приложения и языки программирования предоставляют методы хранения времени с явным указанием часового пояса. [37] Существует также ряд стандартов формата времени, которые доступны для чтения как людьми, так и компьютерами, например ISO 8601 .

Известные события во времена Unix

Энтузиасты Unix имеют историю проведения «вечеринок time_t» (произносится как « чаепития времени »), чтобы отметить значительные значения временного числа Unix. [38] [39] Они напрямую аналогичны празднованию Нового года , которое происходит при смене года во многих календарях. По мере распространения использования Unix росла и практика празднования ее вех. Обычно отмечаются значения времени, представляющие собой круглые десятичные числа , в соответствии с соглашением Unix о просмотре time_tдесятичных значений. Среди некоторых групп также отмечаются круглые двоичные числа, например +2 30 , произошедшее в 13:37:04 UTC в субботу, 10 января 2004 г.

События, которые они отмечают, обычно описываются как « N секунд с эпохи Unix», но это неточно; как обсуждалось выше, из-за обработки високосных секунд во времени Unix количество секунд, прошедших с момента начала эпохи Unix, немного больше, чем число времени Unix, для времен, более поздних, чем эпоха.

В популярной культуре

В романе Вернора Винджа «Глубина в небе» описывается космическая торговая цивилизация, живущая через тысячи лет в будущем, которая до сих пор использует эпоху Unix. « Программист-археолог », ответственный за поиск и поддержание пригодного для использования кода в зрелых компьютерных системах, сначала полагает, что эта эпоха относится ко времени, когда человек впервые ступил на Луну , но затем понимает, что это «0-секундная секунда одного из первых событий человечества». компьютерные операционные системы». [47]

Смотрите также

Примечания

  1. ^ Время Unix также известно как «время эпохи», « время POSIX », [2] «секунды с начала эпохи», [3] «временная метка Unix» или «время эпохи UNIX». [4]
  2. ^ цитируется задним числом с момента публикации ISO 8601 в 1988 году.

Рекомендации

  1. ^ аб Фархад, Манджу (8 сентября 2001 г.). «Unix Tick Tocks до миллиарда». Проводной . ISSN  1059-1028. Архивировано из оригинала 11 сентября 2022 года . Проверено 16 октября 2022 г.
  2. ^ «Базовые спецификации открытой группы, выпуск 7, Обоснование: базовые определения, раздел A.4 Общие понятия» . Открытая группа . Архивировано из оригинала 15 ноября 2017 года . Проверено 9 сентября 2019 г.
  3. ^ abc «Базовые спецификации открытой группы, выпуск 7, раздел 4.16 Секунды с начала эпохи» . Открытая группа . Архивировано из оригинала 22 декабря 2017 года . Проверено 22 января 2017 г.
  4. ^ Мэтью, Нил; Стоунз, Ричард (2008). «Среда Linux». Начало программирования Linux . Индианаполис, Индиана, США: Уайли. п. 148. ИСБН 978-0-470-14762-7.
  5. ^ «Структура FILETIME (minwinbase.h)» . Документы Майкрософт .
  6. Миллс, Дэвид Л. (12 мая 2012 г.). «Временная шкала NTP и високосные секунды». eecis.udel.edu . Архивировано из оригинала 15 мая 2012 года . Проверено 21 августа 2017 г.
  7. ^ «Точный хронометраж». Источники данных о часовом поясе и летнем времени . Архивировано из оригинала 16 октября 2017 года . Проверено 30 мая 2022 г. Код и данные tz поддерживают високосные секунды посредством дополнительной «правой» конфигурации, в которой внутренние целочисленные часы time_t компьютера отсчитывают каждую секунду TAI, в отличие от конфигурации «posix» по умолчанию, в которой внутренние часы игнорируют високосные секунды. Две конфигурации совпадают для временных меток, начинающихся с 1972-01-01 00:00:00 UTC (time_t 63 072 000), и расходятся для временных меток, начинающихся с time_t 78 796 800, что соответствует первой дополнительной секунде 1972-06-30 23: 59:60 UTC в «правильной» конфигурации и до 01.07.1972 00:00:00 UTC в конфигурации «posix».
  8. ^ ab «Временные шкалы». Wiki протокола сетевого времени . 24 июля 2019 года. Архивировано из оригинала 12 января 2020 года . Проверено 12 января 2020 г.
  9. ^ Маркус Кун. «Модернизированный API для ISO C». www.cl.cam.ac.uk. _ Архивировано из оригинала 26 сентября 2020 года . Проверено 31 августа 2020 г.
  10. ^ "Спецификация времени". Страницы руководства NetBSD . 12 апреля 2011 г. Архивировано из оригинала 10 августа 2019 г. . Проверено 5 июля 2019 г.
  11. ^ "время.ч(0P)". Страница руководства по Linux . Архивировано из оригинала 27 июня 2019 года . Проверено 5 июля 2019 г.
  12. ^ Маккарти, Д.Д .; Зайдельманн, ПК (2009). ВРЕМЯ — От вращения Земли до атомной физики . Вайнхайм: Wiley – VCH Verlag GmbH & Co. KGaA. п. 232. ИСБН 978-3-527-40780-4.
  13. ^ Руководство программиста Unix (PDF) (1-е изд.). 3 ноября 1971 г. Архивировано (PDF) из оригинала 5 марта 2022 г. . Проверено 28 марта 2012 г. time возвращает время с 00:00:00 1 января 1971 года, измеренное в шестидесятых долях секунды.
  14. ^ Руководство программиста Unix (PDF) (3-е изд.). 15 марта 1972 года. Архивировано (PDF) из оригинала 12 февраля 2023 года . Проверено 11 февраля 2023 г. time возвращает время с 00:00:00 1 января 1972 года, измеренное в шестидесятых долях секунды... Время хранится в 32 битах. Это гарантирует кризис каждые 2,26 года.
  15. ^ «Базовые спецификации технических стандартов Open Group, выпуск 7 (издание 2018 г.)» . IEEE и Открытая группа. Архивировано из оригинала 1 мая 2023 года . Проверено 1 мая 2023 г.
  16. ^ ab "время, _time32, _time64". Learn.microsoft.net . Корпорация Майкрософт. 13 февраля 2023 года. Архивировано из оригинала 1 мая 2023 года . Проверено 1 мая 2023 г.
  17. ^ "Библиотека GNU C (glibc)" . GNU Operation Sisyem . Фонд свободного программного обеспечения. Архивировано из оригинала 22 апреля 2016 года . Проверено 1 мая 2023 г. Проект GNU C Library предоставляет основные библиотеки для систем GNU и GNU/Linux, а также для многих других систем, использующих Linux в качестве ядра.
  18. ^ «Страница руководства Mac OS X для локального времени (3)» . Архив документации Apple . Apple Inc. Архивировано из оригинала 22 июля 2022 года . Проверено 1 мая 2023 г.
  19. ^ "НСДата". Документация разработчика Apple . Apple Inc. Архивировано из оригинала 1 мая 2023 года . Проверено 1 мая 2023 г.
  20. ^ «Обзор времени». Проект Android с открытым исходным кодом . ООО Гугл. Архивировано из оригинала 1 мая 2023 года . Проверено 1 мая 2023 г.
  21. ^ «Формат PE — приложения Win32» . Learn.microsoft.com . Корпорация Майкрософт. 24 марта 2023 года. Архивировано из оригинала 29 апреля 2023 года . Проверено 1 мая 2023 г.
  22. ^ «Мгновенный (платформа Java SE 8)» . docs.oracle.com . Оракул. Архивировано из оригинала 25 ноября 2016 года . Проверено 1 мая 2023 г.
  23. ^ «время — доступ ко времени и преобразования», документация Python , заархивировано из оригинала 22 июля 2022 г. , получено 25 июля 2022 г.
  24. ^ «Дата — JavaScript | MDN» . http://developer.mozilla.org . Мозилла. Архивировано из оригинала 21 июля 2021 года . Проверено 1 мая 2023 г.
  25. ^ Справочник по файловой системе Apple (PDF) , стр. 57, заархивировано (PDF) из оригинала 5 ноября 2022 г. , получено 19 октября 2022 г. Эта временная метка представлена ​​как количество наносекунд с 1 января 1970 г. в 0:00 UTC, без учета дополнительных секунд.
  26. ^ «Структуры данных и алгоритмы». Документация ядра Linux . Linux Kernel Organization, Inc. Архивировано из оригинала 1 мая 2023 года . Проверено 1 мая 2023 г.
  27. ^ «Формат архива RAR 5.0» . www.rarlab.com . Win.rar GmbH. Архивировано из оригинала 1 мая 2023 года . Проверено 1 мая 2023 г. Время сохраняется в формате Unix time_t, если этот флаг [sic] установлен, и в формате Windows FILETIME в противном случае.
  28. ^ «Семейство форматов файлов ленточного архива (tar)» . www.loc.gov . Библиотека Конгресса. 7 января 2021 г. Архивировано из оригинала 1 мая 2023 г. Проверено 1 мая 2023 г.
  29. ^ «Функции даты и времени», Справочное руководство MySQL 8.0 , заархивировано из оригинала 19 октября 2022 г. , получено 19 октября 2022 г.
  30. ^ «8.5. Типы даты и времени». Документация PostgreSQL . Группа глобального развития PostgreSQL. 9 февраля 2023 года. Архивировано из оригинала 1 мая 2023 года . Проверено 1 мая 2023 г.
  31. ^ abc Рочкинд, Марк (2004). Расширенное программирование UNIX (2-е изд.). Аддисон-Уэсли. стр. 56–63. ISBN 978-0-13-141154-8.
  32. ^ Саксена, Ашутош; Рават, Санджай. «Рабочий документ IDRBT № 9» (PDF) . Архивировано из оригинала (PDF) 13 мая 2012 года.
  33. ^ «FILETIME (minwinbase.h) — приложения Win32» . Microsoft Learn . Майкрософт. 2 апреля 2021 года. Архивировано из оригинала 10 марта 2023 года . Проверено 9 марта 2023 г.
  34. ^ «Время файлов — приложения Win32» . Microsoft Learn . Майкрософт. 7 января 2021 года. Архивировано из оригинала 8 марта 2023 года . Проверено 9 марта 2023 г.
  35. ^ «Как преобразовать атрибуты даты и времени в Active Directory в стандартный формат времени» . Microsoft Learn . Майкрософт. Архивировано из оригинала 20 октября 2022 года . Проверено 20 октября 2022 г.
  36. ^ В. Ричард Стивенс; Билл Феннер; Эндрю М. Рудофф (2004). Сетевое программирование UNIX. Аддисон-Уэсли Профессионал. стр. 582–. ISBN 978-0-13-141155-5. Архивировано из оригинала 30 марта 2019 года . Проверено 16 октября 2016 г.
  37. ^ «datetime — основные типы даты и времени». Справочник по стандартной библиотеке Python . Фонд программного обеспечения Python. Архивировано из оригинала 19 октября 2022 года . Проверено 20 октября 2022 г. Атрибуты: год, месяц, день, час, минута, секунда, микросекунда и цинфо.
  38. ^ аб Твини, Дилан (12 февраля 2009 г.). «Любители Unix веселятся, как будто это 1234567890». Проводной . Архивировано из оригинала 29 марта 2014 года . Проверено 12 марта 2017 г.
  39. ^ "Slashdot | дата +%s поворота 1111111111" . 17 марта 2005 г. Архивировано из оригинала 12 января 2020 г. Проверено 12 января 2020 г.[ ненадежный источник? ]
  40. ^ «Факты и мелочи о времени Unix - Unix Time. Информация» . Архивировано из оригинала 27 октября 2017 года.
  41. ^ «UNIX приближается к зрелой старости в один миллиард» . Электромагнетик.нет. Архивировано из оригинала 13 апреля 2013 года . Проверено 6 декабря 2012 г.
  42. Нойманн, Питер Г. (15 октября 2001 г.). «Дайджест рисков, том 21: выпуск 69». Catless.ncl.ac.uk. Архивировано из оригинала 22 октября 2015 года . Проверено 6 декабря 2012 г.
  43. ^ «Технические проблемы». linuxmafia.com . Архивировано из оригинала 11 октября 2012 года . Проверено 21 августа 2017 г.
  44. ^ НиксКрафт. «Юмор: в пятницу, 13 февраля 2009 г., Unix-время будет 1234567890». Cyberciti.biz . Проверено 5 июля 2023 г.
  45. ^ «Логотип Google 1234567890» . Google Inc. Архивировано из оригинала 11 января 2013 года . Проверено 28 января 2013 г.
  46. Ахмед, Мурад (13 февраля 2009 г.). «При третьем такте время Unix будет 1234567890». Времена . Архивировано из оригинала 14 ноября 2016 года . Проверено 12 января 2020 г.
  47. ^ Маши, Джон Р. (27 декабря 2004 г.). «Языки, уровни, библиотеки и долголетие». Очередь . 2 (9): 32–38. дои : 10.1145/1039511.1039532 . S2CID  28911378. Архивировано из оригинала 10 августа 2019 года . Проверено 12 января 2020 г.

Внешние ссылки