Jump to content

Системное время

(Перенаправлено с системных часов )
Unix даты Команда

В информатике и программировании компьютерном системное время представляет собой представление компьютерной системы о течении времени. В этом смысле время также включает в себя течение дней в календаре .

Системное время измеряется системными часами , которые обычно реализуются как простой подсчет количества тиков , прошедших с некоторой произвольной начальной даты, называемой эпохой . Например, системы, совместимые с Unix и POSIX, кодируют системное время (« время Unix ») как количество секунд, прошедших с начала эпохи Unix 1 января 1970 года в 00:00:00 UT , за исключением високосных секунд . Системы, реализующие 32-битные и 64-битные версии Windows API , такие как Windows 9x и Windows NT , предоставляют системное время как SYSTEMTIME , представленный как значение года/месяца/дня/часа/минуты/секунды/миллисекунды, и FILETIME , представленный как количество 100-наносекундных тиков с 1 января 1601 года 00:00:00 UT по упреждающему григорианскому календарю .

Системное время можно преобразовать в календарное время , которое является формой, более подходящей для человеческого понимания. Например, системное время Unix 1 000 000 000 секунд с начала эпохи преобразуется в календарное время 9 сентября 2001 года 01:46:40 UT . Библиотечные функции , которые обрабатывают такие преобразования, могут также обрабатывать настройки часовых поясов , летнего времени пользователя (DST), дополнительных секунд и настроек локали . Также обычно предоставляются библиотечные процедуры, преобразующие календарное время в системное время.

Многие реализации, которые в настоящее время хранят системное время в виде 32-битных целочисленных значений, пострадают от надвигающейся проблемы 2038 года . Эти значения времени переполнятся («исчерпаются биты») после окончания периода системного времени, что приведет к ошибкам программного и аппаратного обеспечения . Эти системы потребуют той или иной формы исправления, аналогичной усилиям, необходимым для решения предыдущей проблемы 2000 года . Это также потенциально может стать гораздо более серьезной проблемой для существующих форматов файлов данных , которые содержат системные метки времени, хранящиеся в виде 32-битных значений.

Другие измерения времени

[ редактировать ]

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

Файловые системы отслеживают время создания, изменения и/или доступа к файлам, сохраняя временные метки в блоке управления файлами (или индексном дескрипторе ) каждого файла и каталога .

первого поколения Большинство персональных компьютеров не отслеживали дату и время. В их число входили системы, работавшие под управлением операционной системы CP/M , а также ранние модели Apple II , BBC Micro , Commodore PET и другие. Дополнительные периферийные платы , которые включали в себя чипы часов реального времени со встроенной резервной батареей, были доступны для IBM PC и XT , но IBM AT был первым широко доступным ПК, оснащенным аппаратным обеспечением даты/времени, встроенным в компьютер. материнская плата . До широкого распространения компьютерных сетей большинство персональных компьютерных систем, которые отслеживали системное время, делали это только по отношению к местному времени и не учитывали различные часовые пояса .

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

Микроконтроллеры, работающие во встроенных системах (таких как Raspberry Pi , Arduino и другие подобные системы ), не всегда имеют внутреннее оборудование для отслеживания времени. Многие такие системы контроллеров работают без знания внешнего времени. Те, кому требуется такая информация, обычно инициализируют свое базовое время после перезагрузки , получая текущее время из внешнего источника, например, с сервера времени или внешних часов, или предлагая пользователю ввести текущее время вручную.

Выполнение

[ редактировать ]

Системные часы обычно реализуются как программируемый интервальный таймер , который периодически прерывает работу ЦП, который затем начинает выполнение процедуры обслуживания прерывания таймера. Эта процедура обычно добавляет один такт к системным часам (простой счетчик) и выполняет другие периодические служебные задачи ( вытеснение и т. д.) перед возвратом к задаче, которую ЦП выполнял до прерывания.

Получение системного времени

[ редактировать ]
05 августа 2024 г., 08:40:50 UTC

Системное время Википедии, когда эта страница была создана в последний раз.
Очистите эту страницу и обновите этот счетчик.

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

Разрешение измерения времени в реализации не подразумевает такой же точности таких измерений. Например, система может возвращать текущее время как значение, измеряемое в микросекундах, но на самом деле быть способной различать отдельные такты часов с частотой всего 100 Гц (10 мс).

Операционные системы

[ редактировать ]
Операционная система Команда или функция Разрешение Эпоха или диапазон
Андроид java.lang.System.currentTimeMillis() 1 мс 1 января 1970 г.
БИОС ( IBM-ПК ) INT 1Ah, AH=00h[1] 54,9254 мс
18,2065 Гц
Полночь текущего дня
INT 1Ah, AH=02h[2] 1 с Полночь текущего дня
INT 1Ah, AH=04h[3] 1 день С 1 января 1980 г. по 31 декабря 1999 г. или 31 декабря 2079 г. (зависит от системы)
КП/М Плюс Блок управления системой: [4]
scb$base+58h, Дней с 31 декабря 1977 г.
scb$base+5Ah, Час (BCD)
scb$base+5Bh, Минута (BCD)
scb$base+5Ch, Второй (BCD)
1 с 31 декабря 1977 г. - 5 июня 2157 г.
БДОС-функция 69h>( T_GET): [5]
word, Дней с 1 января 1978 года
byte, Час (BCD)
byte, Минута (BCD)
byte, Второй (BCD)
ДОС ( Майкрософт ) C:\> DATE
C:\> TIME
10 мс С 1 января 1980 г. по 31 декабря 2099 г.
INT 21h, AH=2Ch SYSTEM TIME[6]
INT 21h, AH=2Ah SYSTEM DATE[7]
iOS ( Эппл ) CFAbsoluteTimeGetCurrent()[8] < 1 мс 1 января 2001 г. ± 10 000 лет.
macOS CFAbsoluteTimeGetCurrent()[9] < 1 мс [10] [примечание 1] 1 января 2001 г. ± 10 000 лет. [10] [примечание 1]
OpenVMS SYS$GETTIM() 100 нс [11] С 17 ноября 1858 г. по 31 июля 31 086 г. [12]
gettimeofday() 1 мкс [13] 1 января 1970 г. - 7 февраля 2106 г. [14]
clock_gettime() 1 нс [13]
з/ОС STCK[15] : 7–187  2 −12 мкс
244,14 пс [15] : 4–45, 4–46 
С 1 января 1900 г. по 17 сентября 2042 г. UT [16]
STCKE 1 января 1900 г. - 36 765 г. н.э. [17]
Юникс , POSIX
(см. также функции даты и времени C )
$ date
time()
1 с (*)
С 1 января 1970 г. (до 19 января 2038 г. до Linux 5.9) по 2 июля 2486 г. (начиная с Linux 5.10)
С 1 января 1970 г. по 4 декабря нашей эры 292 277 026 596
gettimeofday() 1 мкс
clock_gettime() 1 нс
ОС/2 DosGetDateTime() 10 мс С 1 января 1980 г. по 31 декабря 2079 г. [18]
Окна GetSystemTime() 1 мс С 1 января 1601 г. по 14 сентября 30828, 02:48:05.4775807
GetSystemTimeAsFileTime() 100 нс
GetSystemTimePreciseAsFileTime()

Языки программирования и приложения

[ редактировать ]
Язык/Приложение Функция или переменная Разрешение Эпоха или диапазон
Есть Ada.Calendar.Clock от 100 мкс до
20 мс (*)
С 1 января 1901 г. по 31 декабря 2099 г. (*)
АВК systime() 1 с (*)
БЕЙСИК , настоящий БЕЙСИК DATE, DATE$
TIME, TIME$
1 с (*)
Бизнес БЕЙСИК DAY, TIM 0,1 с (*)
C (см. функции даты и времени C ) time() 1 с (*) [примечание 2] (*) [примечание 2]
С++ std::time()
std::chrono::system_clock::now()
1 с (*) [примечание 2]
1 нс (C++11, зависит от ОС)
(*) [примечание 2]
С# System.DateTime.Now[19]
System.DateTime.UtcNow[20]
100 нс [21] С 1 января 0001 г. по 31 декабря 9999 г.
КИКС ASKTIME 1 мс 1 января 1900 г.
КОБОЛ FUNCTION CURRENT-DATE 1 с 1 января 1601 г.
Общий Лисп (get-universal-time) 1 с 1 января 1900 г.
Делфи ( Борланд ) date
time
1 мс
(с плавающей запятой)
1 января 1900 г.
Дельфи
( Эмбаркадеро Технологии ) [22]
System.SysUtils.Time[23] 1 мс 0/0/0000 0:0:0:000 до
31.12.9999 23:59:59:999 [так в оригинале]
System.SysUtils.GetTime[24] (псевдоним для System.SysUtils.Time)
System.SysUtils.Date[25] 0/0/0000 0:0:0:000 до
31.12.9999 0:0:0:000 [так в оригинале]
System.DateUtils.Today[26]
System.DateUtils.Tomorrow[27]
System.DateUtils.Yesterday[28]
System.SysUtils.Now[29] 1 с 0/0/0000 0:0:0:000 до
31.12.9999 23:59:59:000 [так в оригинале]
System.SysUtils.DayOfWeek[30] 1 день от 1 до 7
System.SysUtils.CurrentYear[31] 1 год (*)
Эмакс Лисп (current-time) 1 мкс (*) 1 января 1970 г.
Эрланг erlang:system_time(), os:system_time()[32] Зависит от ОС , например, от Linux 1ns [32] 1 января 1970 г. [32]
Эксель date() ? 0 января 1900 г. [33]
Фортран DATE_AND_TIME
SYSTEM_CLOCK
(*) [34]

[35]

1 января 1970 г.
CPU_TIME 1 мкс
Идти time.Now() 1 нс 1 января 0001 г.
Хаскелл Time.getClockTime 1 пс (*) 1 января 1970 г. (*)
Data.Time.getCurrentTime 1 пс (*) 17 ноября 1858 г. (*)
Ява java.util.Date()
System.currentTimeMillis()
1 мс 1 января 1970 г.
System.nanoTime()[36] 1 нс произвольный [36]
Clock.systemUTC()[37] 1 нс произвольный [38]
JavaScript , TypeScript (new Date()).getTime()
Date.now()
1 мс 1 января 1970 г.
Матлаб now 1 с 0 января 0000 [39]
Свинка $H ( сокращение от $HOROLOG) 1 с 31 декабря 1840 г.
ЛабВЬЮ Tick Count 1 мс 00:00:00.000 1 января 1904 г.
Get Date/Time in Seconds 1 мс 00:00:00.000 1 января 1904 г.
Цель-C [NSDate timeIntervalSinceReferenceDate] < 1 мс [40] 1 января 2001 г. ± 10 000 лет. [40]
OCaml Unix.time() 1 с 1 января 1970 г.
Unix.gettimeofday() 1 мкс
Расширенный Паскаль GetTimeStamp() 1 с (*)
Турбо Паскаль GetTime()
GetDate()
10 мс (*)
Перл time() 1 с 1 января 1970 г.
Time::HiRes::time[41] 1 мкс
PHP time()
mktime()
1 с 1 января 1970 г.
microtime() 1 мкс
PureBasic Date() 1 с С 1 января 1970 г. по 19 января 2038 г.
Питон datetime.now().timestamp() 1 мкс (*) 1 января 1970 г.
РПГ CURRENT(DATE), %DATE
CURRENT(TIME), %TIME
1 с С 1 января 0001 г. по 31 декабря 9999 г.
CURRENT(TIMESTAMP), %TIMESTAMP 1 мкс
Руби Time.now()[42] 1 мкс (*) 1 января 1970 г.
(до 19 января 2038 г. до Ruby 1.9.2 [43] )
Схема (get-universal-time)[44] 1 с 1 января 1900 г.
Смолток Time microsecondClock
(Висуалворкс)
1 с (ANSI)
1 мкс (VisualWorks)
1 с (Писк)
1 января 1901 г. (*)
Time totalSeconds
(Скрип)
SystemClock ticksNowSinceSystemClockEpoch
(Хронос)
SQL CURDATE() или CURRENT DATE
CURTIME() или CURRENT TIME
GETDATE() или GETUTCDATE()
NOW() или CURRENT TIMESTAMP
SYSDATE()
3 мс С 1 января 1753 г. по 31 декабря 9999 г. (*)
60 с 1 января 1900 г. - 6 июня 2079 г.
Стандартный ML Time.now() 1 мкс (*) 1 января 1970 г. (*)
ТКЛ [clock seconds] 1 с 1 января 1970 г.
[clock milliseconds] 1 мс
[clock microseconds] 1 мкс
[clock clicks] 1 мкс (*) (*)
Windows PowerShell Get-Date[45] [46] 100 нс [21] С 1 января 0001 г. по 31 декабря 9999 г.
[DateTime]::Now[19]
[DateTime]::UtcNow[20]
Визуальный Бейсик .NET System.DateTime.Now[19]
System.DateTime.UtcNow[20]
100 нс [21] С 1 января 0001 г. по 31 декабря 9999 г.

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ Перейти обратно: а б В документации разработчика Apple нет ясности относительно точности и диапазона CFAbsoluteTime/CFTimeInterval, за исключением документации CFRunLoopTimerCreate, которая относится к точности «не более субмиллисекунды». Однако аналогичный тип NSTimeInterval кажется взаимозаменяемым и имеет указанную точность и диапазон.
  2. ^ Перейти обратно: а б с д Стандартная библиотека C не определяет какое-либо конкретное разрешение, эпоху, диапазон или тип данных для значений системного времени . Библиотека C++ включает в себя библиотеку C, поэтому она использует ту же реализацию системного времени, что и C.
  1. ^ Ральф Д. Браун (2000). «Целое 0x1A, AH=0x00» . Список прерываний Ральфа Брауна .
  2. ^ Ральф Д. Браун (2000). «Целое 0x1A, AH=0x02» . Список прерываний Ральфа Брауна .
  3. ^ Ральф Д. Браун (2000). «Целое 0x1A, AH=0x04» . Список прерываний Ральфа Брауна .
  4. ^ «Руководство по операционной системе CP/M Plus (CP/M версии 3.0)» (PDF) .
  5. ^ «Системные вызовы BDOS» .
  6. ^ Ральф Д. Браун (2000). «Целое 0x21, AH=0x2c» . Список прерываний Ральфа Брауна .
  7. ^ Ральф Д. Браун (2000). «Целое 0x21, AH=0x2a» . Список прерываний Ральфа Брауна .
  8. ^ «Справочник по утилитам времени» . Библиотека разработчиков iOS . 2007.
  9. ^ «Справочник по утилитам времени» . Библиотека разработчиков Mac OS X. 2007.
  10. ^ Перейти обратно: а б «Утилиты времени – Фонд» . Документация разработчика Apple . Проверено 6 июля 2022 г.
  11. ^ Рут Э. Гольденберг; Лоуренс Дж. Кена; Дениз Э. Дюма (1991). Внутренние устройства и структуры данных VAX/VMS, версия 5.2 . Цифровая пресса. ISBN  978-1555580599 .
  12. ^ «Почему среда, 17 ноября 1858 года, является базовым временем для OpenVMS (VAX VMS)?» . Стэнфордский университет . 24 июля 1997 года. Архивировано из оригинала 24 июля 1997 года . Проверено 8 января 2020 г.
  13. ^ Перейти обратно: а б «Справочное руководство по библиотеке времени выполнения VSI C для систем OpenVMS» (PDF) . ВСИ. Ноябрь 2020 года . Проверено 17 апреля 2021 г.
  14. ^ «OpenVMS и 2038 год» . ХП . Проверено 17 апреля 2021 г.
  15. ^ Перейти обратно: а б z/Принципы работы архитектуры (PDF) . Покипси, Нью-Йорк: Машины международного бизнеса. 2007.
  16. ^ IBM намерена расширить диапазон дат для будущих систем после 2042 года. z/Architecture Principles of Operation , (Poughkeepsie, New York: International Business Machines, 2007) 1–15, 4–45–4–47.
  17. ^ «Расширенные 64-битные значения времени» . ИБМ . Проверено 18 апреля 2021 г.
  18. ^ Джонатан де Бойн Поллард. «32-битный интерпретатор команд» . В OS/2 Warp 4 дата и время могут работать далеко за пределами 2000 года и даже далеко за пределами 2038 года, а фактически до 2079 года, что является пределом для часов реального времени OS/2 Warp 4. .
  19. ^ Перейти обратно: а б с «Свойство DateTime.Now» . Документы Майкрософт .
  20. ^ Перейти обратно: а б с «Свойство DateTime.UtcNow» . Документы Майкрософт .
  21. ^ Перейти обратно: а б с «Свойство DateTime.Ticks» . Документы Майкрософт .
  22. ^ «Поддержка даты и времени» . Сеть разработчиков Embarcadero . 2013.
  23. ^ «System.SysUtils.Time» . Сеть разработчиков Embarcadero . 2013.
  24. ^ «System.SysUtils.GetTime» . Сеть разработчиков Embarcadero . 2013.
  25. ^ "System.SysUtils.Date" . Сеть разработчиков Embarcadero» . 2013.
  26. ^ «System.DateUtils.Today» . Сеть разработчиков Embarcadero . 2013.
  27. ^ «System.DateUtils.Tomorrow» . Сеть разработчиков Embarcadero . 2013.
  28. ^ «System.DateUtils.Вчера» . Сеть разработчиков Embarcadero . 2013.
  29. ^ «System.SysUtils.Now» . Сеть разработчиков Embarcadero . 2013.
  30. ^ «System.SysUtils.DayOfWeek» . Сеть разработчиков Embarcadero . 2013.
  31. ^ «System.SysUtils.CurrentYear» . Сеть разработчиков Embarcadero . 2013.
  32. ^ Перейти обратно: а б с «Время и коррекция времени в Эрланге» . www.erlang.org .
  33. ^ «XL2000: Ранние версии компонента электронных таблиц Office отличаются от Excel» . Поддержка Майкрософт . 2003. Архивировано из оригинала 24 октября 2007 года. В компоненте электронных таблиц Microsoft Office значение 0 соответствует дате 30 декабря 1899 года, а значение 1 соответствует дате 31 декабря 1899 года. ... В Excel значение 0 оценивается до 0 января 1900 года, а значение 1 соответствует 1 января 1900 года.
  34. ^ "SYSTEM_CLOCK" . Руководство и справочник разработчиков Intel Fortran Compiler 19.0 . 29 апреля 2019 года . Проверено 23 июля 2019 г.
  35. ^ «SYSTEM_CLOCK — Функция времени» . Компилятор GNU Fortran . Проверено 27 октября 2011 г.
  36. ^ Перейти обратно: а б «Метод System.nanoTime()» . Платформа Java, стандартная версия 6: Спецификация API . 2015 . Проверено 23 июля 2019 г.
  37. ^ «Clock.systemUTC() и другие методы» . Платформа Java, стандартная версия 8: Спецификация API . 2014 . Проверено 15 января 2015 г.
  38. ^ «Система времени Java JSR-310» . Платформа Java, стандартная версия 8: Спецификация API . 2014 . Проверено 15 января 2015 г.
  39. ^ «Помощь по Матлабу» .
  40. ^ Перейти обратно: а б «NSTimeInterval — Фонд» . Документация разработчика Apple .
  41. ^ Дуглас Вегшилд, Р. Шертлер и Яркко Хиетаниеми, «Время::HiRes» . CPAN — Комплексная сеть архивов Perl . 2011 . Проверено 27 октября 2011 г.
  42. ^ Джеймс Бритт; Нейрогами. «Класс времени» . Ruby-Doc.org: Справка и документация по языку программирования Ruby . Скоттсдейл, Аризона . Проверено 27 октября 2011 г.
  43. ^ Югуи (18 августа 2010 г.). «Выпущен Ruby 1.9.2» . Новая версия 1.9.2 практически совместима с 1.9.1, за исключением следующих изменений: ... Время переопределено. Исправлена ​​ошибка с 2038 годом.
  44. ^ «Схема MIT/GNU 9.2: 15.5 Дата и время» .
  45. ^ «Использование командлета Get-Date» . Документы Майкрософт . Проверено 23 июля 2019 г.
  46. ^ «Совет недели по Windows PowerShell: форматирование даты и времени» . Документы Майкрософт . Проверено 23 июля 2019 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 3ab25e863896e21161364286fc0ebc6a__1715297820
URL1:https://arc.ask3.ru/arc/aa/3a/6a/3ab25e863896e21161364286fc0ebc6a.html
Заголовок, (Title) документа по адресу, URL1:
System time - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)