stringtranslate.com

Эпоха (вычисления)

В вычислительной технике эпоха — это фиксированная дата и время, используемые в качестве точки отсчета, от которой компьютер измеряет системное время . Большинство компьютерных систем определяют время как число, представляющее собой секунды, удаленные от определенной произвольной даты и времени. Например, Unix и POSIX измеряют время как количество секунд, прошедших с четверга 1 января 1970 года 00:00:00 UT , момента времени, известного как эпоха Unix . Системы Windows NT , вплоть до Windows 11 и Windows Server 2022 , измеряют время как количество 100-наносекундных интервалов, прошедших с 1 января 1601 года 00:00:00 UTC, что делает этот момент времени эпохой для этих систем. [1] Эпохи вычислений почти всегда указываются как полночь по всемирному времени в определенную дату.

Резолюция и представительство

Системы программного обеспечения для измерения времени сильно различаются по разрешению измерения времени; некоторые системы могут использовать единицы времени размером с день, в то время как другие могут использовать наносекунды . Например, для даты эпохи полночь UTC (00:00) 1 января 1900 года и единицы времени секунда, время полуночи (24:00) между 1 января 1900 года и 2 января 1900 года представлено числом 86400, количеством секунд в одном дне. Когда необходимо представить время до эпохи, обычно используют ту же систему, но с отрицательными числами.

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

Проблемы

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

Наиболее известными из них были старые системы, которые отсчитывали время как количество лет, прошедших с эпохи 1 января 1900 года, и которые выделяли достаточно места только для хранения чисел от 0 до 99, столкнувшись с проблемой 2000 года . Эти системы (если их заранее не исправить) интерпретировали дату 1 января 2000 года как 1 января 1900 года, что приводило к непредсказуемым ошибкам в начале 2000 года.

Даже системы, которые выделяют больше памяти для представления времени, не застрахованы от такого рода ошибок. Многие операционные системы типа Unix, которые ведут отсчет времени в секундах, прошедших с даты эпохи 1 января 1970 года, и выделяют достаточно памяти для хранения чисел размером до 2 147 483 647, столкнутся с проблемой переполнения 19 января 2038 года. Это известно как проблема 2038 года .

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

Наконец, некоторое программное обеспечение должно поддерживать совместимость со старым программным обеспечением, которое не отслеживает время в строгом соответствии с традиционными системами отсчета времени. Например, Microsoft Excel отмечает вымышленную дату 29 февраля 1900 года , чтобы сохранить совместимость с ошибками со старыми версиями Lotus 1-2-3 . [2] Lotus 1-2-3 отслеживал дату из-за ошибки; к тому времени, когда ошибка была обнаружена, было уже слишком поздно ее исправлять — «изменение сейчас нарушило бы формулы, которые были написаны для учета этой аномалии». [3]

В спутниковых системах времени

Существует не менее шести спутниковых навигационных систем, все из которых функционируют путем передачи сигналов времени . Из двух спутниковых систем с глобальным покрытием GPS вычисляет свой сигнал времени из эпохи, тогда как ГЛОНАСС вычисляет время как смещение от UTC , с вводом UTC, скорректированным на високосные секунды . Из двух других систем, нацеленных на глобальное покрытие, Galileo вычисляет из эпохи, а BeiDou вычисляет из UTC без корректировки на високосные секунды. [4] [ нужно обновление? ] GPS также передает смещение между временем UTC и временем GPS и должен обновлять это смещение каждый раз, когда появляется високосная секунда , требуя, чтобы приемные устройства GPS правильно обрабатывали обновление. Напротив, високосные секунды прозрачны для пользователей ГЛОНАСС. Сложности расчета UTC из эпохи объясняются Европейским космическим агентством в документации Galileo в разделе «Уравнения для корректировки шкалы времени системы до опорной шкалы времени». [5]

Знаменательные даты эпохи в вычислительной технике

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

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

Примечания

  1. ^ ab Пролептический григорианский календарь.
  2. ^ AmigaOS измеряет время в секундах и сохраняет его в виде 32-битного целого числа со знаком. После 19 января 2046 года, 03:14:07 дата будет отрицательной. Последняя версия ОС 4.1 (2016) не имеет исправления для этого.
  3. ^ Обратите внимание, что функция Epoch возвращает эпоху unix SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE '1970-01-01 00:00:00-00'); возвращает 0.

Ссылки

  1. ^ "[MS-DTYP]: FILETIME". Microsoft Docs . 2020-03-30.
  2. ^ abc Spolsky, Joel (2008-02-19). "Почему форматы файлов Microsoft Office такие сложные? (И некоторые обходные пути)" . Получено 2009-03-08 .
  3. ^ Дершовиц, Нахум ; Рейнгольд, Эдвард (2008). Календарные вычисления (3-е изд.). Cambridge University Press . стр. xxi, xxvi. ISBN 978-0-521-70238-6.
  4. ^ Субирана, Дж. Санс; Зорноза, Дж. М. Хуан; Эрнандес-Пахарес, М. (2011). «Привязки времени в ГНСС». gssc.esa.int/navipedia . Европейское космическое агентство.
  5. ^ "Описание временной шкалы GNSS Galileo" (PDF) . Управление ООН по вопросам космического пространства. 2016. Раздел 5d.
  6. ^ "datenum", MathWorks, доступ 7 июля 2015 г.
  7. ^ "Класс GregorianCalendar". MSDN . Замечания . Получено 2015-04-26 .
  8. ^ «Структура DateTimeOffset» (.NET Framework 4.5), MSDN , 2015.
  9. ^ "Время пакета". golang.org . Получено 2015-04-26 .
  10. ^ «Дата—z/OS TSO/E REXX Reference». IBM.com . IBM. 2014. SA32-0972-00.
  11. ^ Дершовиц, Нахум ; Рейнгольд, Эдвард (2008). «Григорианский календарь». Календарные вычисления (3-е изд.). Cambridge University Press. ISBN 978-0-521-70238-6.
  12. ^ Коулишоу, Майк Фредерик (1990). Язык Rexx: Практический подход к программированию (2-е изд.). Prentice Hall. стр. 93, 177. ISBN 0-13-780651-5.
  13. ^ "Go 1 Release Notes—Major changes to the library—Time". golang.org. 2012-03-28 . Получено 2015-04-26 .
  14. ^ "Форматы даты и времени". IBM.com . IBM . Получено 2020-01-24 .
  15. ^ "CEEDATM — Преобразование секунд в временную метку символа". Справочник по программированию языковой среды z/OS . IBM . 2021-03-22.
  16. ^ Руководство по программированию COBOL для AIX, версия 5.1 (PDF) (первое издание). IBM . Июнь 2015 г. CEEDATE — преобразование даты Lilian в символьный формат. SC27-5404-00.
  17. ^ Лич, П.; Миллинг, М.; Сальц, Р. (июль 2005 г.). "RFC 4122: Предлагаемый стандарт: пространство имен URN универсального уникального идентификатора (UUID)". tools.ietf.org . Internet Engineering Task Force.
  18. ^ ISO/IEC 1989:2014 - Информационные технологии. Языки программирования, их среды и интерфейсы системного программного обеспечения. Язык программирования COBOL. ISO . 2014-06-01. стр. 634.
  19. ^ ab Chen, Raymond (2009-03-06). "Почему эпоха Win32 наступает 1 января 1601 года?". The Old New Thing . Блоги MSDN.
  20. ^ "Структура FILETIME (minwinbase.h)". Microsoft Docs .
  21. ^ "Что случилось в 1841 году?". Часто задаваемые вопросы по технологии M и языку MUMPS, часть 1/2 . Архивировано из оригинала 28-08-2015 . Получено 14-08-2015 .
  22. ^ Winkler, Gernot MR "Modified Julian Date". Военно-морская обсерватория США . Архивировано из оригинала 2013-02-14 . Получено 2015-01-29 .
  23. ^ «Происхождение базового времени VMS» . vms.tuwien.ac.at/info/humour . Технический университет Вены. Архивировано из оригинала 6 июня 2007 г.
  24. ^ "Введение в API Google Таблиц". Разработчики Google .
  25. ^ "Международный день числа". help.dyalog.com . Получено 2018-11-27 .
  26. ^ «Управление временем». msdn.microsoft.com .
  27. ^ «Какова история 30 декабря 1899 года как базовой даты?». social.msdn.microsoft.com .[ постоянная мертвая ссылка ]
  28. ^ ab John Barnes . "7.3 Времена и даты". Обоснование для Ada 2005. Ada Resource Association.
  29. ^ "Даты и время в Excel". cpearson.com .
  30. ^ "MacTech – Журнал технологий Apple". mactech.com .
  31. ^ «Введение в даты и время в SAS» (PDF) .
  32. ^ Марк Пик, Международная конференция по спектру, апрель 2010 г.
  33. ^ "time_t – Справочник C++" . Получено 2015-04-06 .
  34. ^ Бартель, Олаф (сентябрь 1998 г.). «Файл: Проблема 2000 года и Amiga». amiga.de .
  35. ^ Левин, Джуда (2002-07-05). "Распределение времени и частоты с использованием спутников" (PDF) . Reports on Progress in Physics . 65 (8): 1119. Bibcode : 2002RPPh...65.1119L. doi : 10.1088/0034-4885/65/8/201 – через Национальный институт стандартов и технологий (NIST).
  36. ^ "Time Systems and Dates – GPS Time". Department of Oceanography, NPS . Naval Postgraduate School, Oceanography Department. Архивировано из оригинала 2019-01-02 . Получено 2019-02-18 .
  37. ^ "FIT SDK - Работа со значениями даты и времени". garmin.com. 2023-01-01 . Получено 2023-02-25 .
  38. ^ «Гибкая и совместимая передача данных — протокол FIT». garmin.com. 2019-03-01 . Получено 2023-02-25 .
  39. ^ "Форматы AppleSingle/AppleDouble для внешних файлов. Примечание разработчика" (PDF) . Архивировано из оригинала (PDF) 2011-07-17 . Получено 2007-10-23 .
  40. ^ "Документация PostgreSQL 9.1.24. Глава 8: Типы данных. 8.5. Типы даты/времени". PostgreSQL.org . 2016-10-27. Примечание: когда значения временных меток хранятся как восьмибайтовые целые числа (в настоящее время по умолчанию), микросекундная точность доступна для всего диапазона значений. […] Значения временных меток хранятся как секунды до или после полуночи 2000-01-01.
  41. ^ "Спецификация библиотеки кластера ZigBee". Раздел 2.5.2.21 UTCTime.
  42. ^ NASA JPL [@NASAJPL] (2021-05-04). «Сила сильна в этом малыше» ( Твит ) – через Twitter .
  43. ^ "NeoGPS/src/NeoTime.cpp в мастере · SlashDevin/NeoGPS" . Гитхаб . Проверено 5 ноября 2023 г.

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