Системное время - System time

Unix Дата команда

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

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

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

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

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

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

История

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

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

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

Выполнение

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

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

28 ноября 2020 05:45:04 UTC

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

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

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

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

Операционная системаКоманда или функцияРазрешениеЭпоха или диапазон
Androidjava.lang.System.currentTimeMillis ()1 мс1 января 1970 г.
BIOS (IBM PC )INT 1Ah, AH = 00ч[1]54,9254 мс
18.2065 Гц
Полночь текущего дня
INT 1Ah, AH = 02h[2]1 сПолночь текущего дня
INT 1Ah, AH = 04h[3]1 деньС 1 января 1980 г. по 31 декабря 1999 г. или 31 декабря 2079 г. (в зависимости от системы)
CP / M PlusБлок управления системой:[4]
scb $ base + 58h, Дней с 1 января 1978 г.
scb $ base + 5Ah, Час (BCD)
scb $ base + 5Bh, Минуты (BCD)
scb $ base + 5Ch, Второй (BCD)
1 с1 января 1978 г. - сентябрь 2067 г.
Функция BDOS 69ч> (T_GET):[5]
слово, Дней с 1 января 1978 г.
байт, Час (BCD)
байт, Минуты (BCD)
байт, Второй (BCD)
ДОС (Microsoft )C:>ДАТА
C:>ВРЕМЯ
10 мс1 января 1980 г. - 31 декабря 2099 г.
INT 21h, AH = 2Ch СИСТЕМНОЕ ВРЕМЯ[6]
INT 21h, AH = 2Ah ДАТА СИСТЕМЫ[7]
iOS (яблоко )CFAbsoluteTimeGetCurrent ()[8]<1 мс1 января 2001 г. ± 10 000 лет
macOSCFAbsoluteTimeGetCurrent ()[9]<1 мс[10][примечание 1]1 января 2001 г. ± 10 000 лет[10][примечание 1]
OpenVMSSYS $ GETTIM ()100 нс17 ноября 1858 г. до 31 086 г.
z / OSSTCK[11]:7–1872−12 мкс
244.14 л.с.[11]:4–45, 4–46
С 1 января 1900 по 17 сентября 2042 UT[12]
Unix, POSIX
(смотрите также C функции даты и времени )
$Дата
время()
1 с(*)
1 января 1970 г. 19 января 2038 г.
1 января 1970 г. - 292 277 026 596 н. Э.
gettimeofday()1 мкс
clock_gettime()1 нс
OS / 2DosGetDateTime ()10 мс1 января 1980 г. - 31 декабря 2079 г.[13]
WindowsGetSystemTime ()1 мс1 января 1601 г. по 14 сентября 30828 г.[14]
GetSystemTimeAsFileTime ()100 нс
GetSystemTimePreciseAsFileTime ()

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

Язык / ПриложениеФункция или переменнаяРазрешениеЭпоха или диапазон
АдаAda.Calendar.ClockОт 100 мкс до
20 мс (*)
1 января 1901 г. - 31 декабря 2099 г. (*)
AWKsystime ()1 с(*)
БАЗОВЫЙ, True BASICДАТА, ДАТА $
ВРЕМЯ, ВРЕМЯ $
1 с(*)
БАЗОВЫЙ БИЗНЕСДЕНЬ, ТИМ0,1 с(*)
C (видеть C функции даты и времени )время()1 с (*)[заметка 2](*)[заметка 2]
C ++std :: time ()
std :: chrono :: system_clock :: now ()
1 с (*)[заметка 2]
1 нс (C ++ 11, зависит от ОС)
(*)[заметка 2]
C #System.DateTime.Now[15]
System.DateTime.UtcNow[16]
100 нс[17]1 января 0001 г. по 31 декабря 9999 г.
CICSASKTIME1 мс1 января 1900 г.
КОБОЛФУНКЦИЯ ТЕКУЩАЯ ДАТА1 с1 января 1601 г.
Common Lisp(получить универсальное время)1 с1 января 1900 г.
Delphi (Borland )Дата
время
1 мс
(плавающая точка)
1 января 1900 г.
Delphi
(Embarcadero Technologies )[18]
System.SysUtils.Time[19]1 мс0/0/0000 0: 0: 0: 000 по 31 декабря 1999 г. 23: 59: 59: 999 [sic]
System.SysUtils.GetTime[20] (псевдоним для System.SysUtils.Time)
System.SysUtils.Date[21]0/0/0000 0: 0: 0: 000 по 31 декабря 1999 года 0: 0: 0: 000 [sic]
System.DateUtils.Today[22]
System.DateUtils.Tomorrow[23]
System.DateUtils.Вчера[24]
System.SysUtils.Now[25]1 с0/0/0000 0: 0: 0: 000 по 31 декабря 1999 г. 23: 59: 59: 000 [sic]
System.SysUtils.DayOfWeek[26]1 деньОт 1 до 7
System.SysUtils.CurrentYear[27]1 год(*)
Emacs Lisp(Текущее время)1 мкс (*)1 января 1970 г.
Erlangэрланг: system_time (), ос: system_time ()[28]Операционные системы зависимый, например на Linux 1 нс[28]1 января 1970 г.[28]
ExcelДата()?0 января 1900[29]
ФортранДАТА И ВРЕМЯ
SYSTEM_CLOCK
(*)[30]

[31]

1 января 1970 г.
CPU_TIME1 мкс
Идтиtime.Now ()1 нс1 января 0001
HaskellTime.getClockTime1 шт. (*)1 января 1970 г. (*)
Data.Time.getCurrentTime1 шт. (*)17 ноября 1858 г. (*)
Яваjava.util.Date ()
System.currentTimeMillis ()
1 мс1 января 1970 г.
System.nanoTime ()[32]1 нспроизвольный[32]
Clock.systemUTC ()[33]1 нспроизвольный[34]
JavaScript, Машинопись(новая дата ()). getTime ()
Date.now ()
1 мс1 января 1970 г.
Matlabсейчас же1 с0 января 0000[35]
МАМПЫ$ H (Короче для $ HOROLOG)1 с31 декабря 1840 г.
LabVIEWСчетчик тиков1 мс00: 00: 00.000 1 января 1904 г.
Получить дату / время в секундах1 мс00: 00: 00.000 1 января 1904 г.
Цель-C[NSDate timeIntervalSinceReferenceDate]<1 мс[36]1 января 2001 г. ± 10 000 лет[36]
OCamlUnix.time ()1 с1 января 1970 г.
Unix.gettimeofday ()1 мкс
Расширенный ПаскальGetTimeStamp ()1 с(*)
Турбо ПаскальGetTime ()
GetDate ()
10 мс(*)
Perlвремя()1 с1 января 1970 г.
Время :: HiRes :: время[37]1 мкс
PHPвремя()
mktime ()
1 с1 января 1970 г.
microtime ()1 мкс
PureBasicДата()1 с1 января 1970 г. - 19 января 2038 г.
Pythondatetime.now (). timestamp ()1 мкс (*)1 января 1970 г.
РПГТЕКУЩАЯ ДАТА), %ДАТА
ТЕКУЩЕЕ ВРЕМЯ), %ВРЕМЯ
1 с1 января 0001 г. по 31 декабря 9999 г.
ТЕКУЩИЙ (TIMESTAMP), % TIMESTAMP1 мкс
РубинTime.now ()[38]1 мкс (*)1 января 1970 г. (до 19 января 2038 г. до Ruby 1.9.2[39])
БолтовняВремя микросекунды
(VisualWorks)
1 с (ANSI)
1 мкс (VisualWorks)
1 с (Писк)
1 января 1901 г. (*)
Общее время, секунды
(Писк)
SystemClock тикиNowSinceSystemClockEpoch
(Хронос)
SQLCURDATE () или же ТЕКУЩАЯ ДАТА
CURTIME () или же ТЕКУЩЕЕ ВРЕМЯ
GETDATE ()
СЕЙЧАС ЖЕ() или же ТЕКУЩИЙ ВРЕМЯ
SYSDATE ()
3 мс1 января 1753 г. по 31 декабря 9999 г. (*)
60 с1 января 1900 г. - 6 июня 2079 г.
Стандартный MLTime.now ()1 мкс (*)1 января 1970 г. (*)
TCL[часы в секундах]1 с1 января 1970 г.
[часы миллисекунды]1 мс
[часы микросекунды]1 мкс
[щелчки часов]1 мкс (*)(*)
Windows PowerShellGet-Date[40][41]100 нс[17]1 января 0001 г. по 31 декабря 9999 г.
[DateTime] :: Сейчас[15]
[DateTime] :: UtcNow[16]
Visual Basic .NETSystem.DateTime.Now[15]
System.DateTime.UtcNow[16]
100 нс[17]1 января 0001 г. по 31 декабря 9999 г.

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

Примечания

  1. ^ а б В документации для разработчиков Apple неясно точность и диапазон CFAbsoluteTime / CFTimeInterval, за исключением документации CFRunLoopTimerCreate, в которой говорится о точности «не более субмиллисекунд». Однако подобный тип NSTimeInterval кажется взаимозаменяемым, и в нем указаны точность и диапазон.
  2. ^ а б c d В Стандартная библиотека C не указывает конкретное разрешение, эпоху, диапазон или тип данных для значения системного времени. Библиотека C ++ включает в себя библиотеку C, поэтому в ней используется та же реализация системного времени, что и в C.

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

  1. ^ Ральф Д. Браун (2000). «Int 0x1A, AH = 0x00». Список прерываний Ральфа Брауна.
  2. ^ Ральф Д. Браун (2000). "Int 0x1A, AH = 0x02". Список прерываний Ральфа Брауна.
  3. ^ Ральф Д. Браун (2000). «Int 0x1A, AH = 0x04». Список прерываний Ральфа Брауна.
  4. ^ «Руководство по операционной системе CP / M Plus (CP / M версии 3.0)» (PDF).
  5. ^ «Системные вызовы BDOS».
  6. ^ Ральф Д. Браун (2000). "Int 0x21, AH = 0x2c". Список прерываний Ральфа Брауна.
  7. ^ Ральф Д. Браун (2000). "Int 0x21, AH = 0x2a". Список прерываний Ральфа Брауна.
  8. ^ "Справочник по утилитам времени". Библиотека разработчика iOS. 2007.
  9. ^ "Справочник по утилитам времени". Библиотека разработчика Mac OS X. 2007.
  10. ^ а б "CFRunLoopTimerCreate - Core Foundation". Документация для разработчиков Apple. 2007.
  11. ^ а б z / Архитектура Принципы работы (PDF). Покипси, Нью-Йорк: Машины международного бизнеса. 2007 г.
  12. ^ IBM намеревается расширить диапазон дат для будущих систем после 2042 года. z / Архитектура Принципы работы (Покипси, Нью-Йорк: International Business Machines, 2007) 1-15, 4-45–4-47.
  13. ^ Джонатан де Бойн Поллард. «32-битный интерпретатор команд». В OS / 2 Warp 4 дата и время могут работать далеко за пределами 2000 года и даже за пределами 2038 года, а фактически до 2079 года, что является пределом для часов реального времени OS / 2 Warp 4. .
  14. ^ Андерс Тулин (6 апреля 2013 г.). «Интерпретация отметок времени NTFS». Криминалистический фокус.
  15. ^ а б c «Свойство DateTime.Now». Документы Microsoft.
  16. ^ а б c «Свойство DateTime.UtcNow». Документы Microsoft.
  17. ^ а б c "Свойство DateTime.Ticks". Документы Microsoft.
  18. ^ «Поддержка даты и времени». Сеть разработчиков Embarcadero. 2013.
  19. ^ "System.SysUtils.Time". Сеть разработчиков Embarcadero. 2013.
  20. ^ "System.SysUtils.GetTime". Сеть разработчиков Embarcadero. 2013.
  21. ^ "System.SysUtils.Date". Сеть разработчиков Embarcadero '. 2013.
  22. ^ "System.DateUtils.Today"". Сеть разработчиков Embarcadero. 2013.
  23. ^ "System.DateUtils.Tomorrow". Сеть разработчиков Embarcadero. 2013.
  24. ^ "System.DateUtils.Yesterday". Сеть разработчиков Embarcadero. 2013.
  25. ^ "System.SysUtils.Now". Сеть разработчиков Embarcadero. 2013.
  26. ^ "System.SysUtils.DayOfWeek". Сеть разработчиков Embarcadero. 2013.
  27. ^ "System.SysUtils.CurrentYear". Сеть разработчиков Embarcadero. 2013.
  28. ^ а б c Время и временная коррекция в Erlang
  29. ^ «XL2000: ранние даты создания компонента электронных таблиц Office отличаются от Excel». Служба поддержки Microsoft. 2003. Архивировано с оригинал 24 октября 2007 г. В компоненте электронной таблицы Microsoft Office значение 0 соответствует дате 30 декабря 1899 г., а значение 1 соответствует 31 декабря 1899 г. ... В Excel значение 0 соответствует 0 января 1900 г., а значение 1 соответствует 1 января 1900 г.
  30. ^ «SYSTEM_CLOCK». Руководство и справочник разработчика Intel Fortran Compiler 19.0. 29 апреля 2019 г.. Получено 23 июля 2019.
  31. ^ «SYSTEM_CLOCK - функция времени». Компилятор GNU Fortran. Получено 27 октября 2011.
  32. ^ а б "Метод System.nanoTime ()". Платформа Java, Standard Edition 6: Спецификация API. 2015. Получено 23 июля 2019.
  33. ^ "Clock.systemUTC () и другие методы". Платформа Java, Standard Edition 8: Спецификация API. 2014. Получено 15 января 2015.
  34. ^ "Система времени Java JSR-310". Платформа Java, Standard Edition 8: Спецификация API. 2014. Получено 15 января 2015.
  35. ^ "Справка по Matlab".
  36. ^ а б «NSTimeInterval - Фонд». Документация для разработчиков Apple.
  37. ^ Дуглас Вегшайльд, Р. Шертлер и Яркко Хиетаниеми, "Время :: HiRes". CPAN - комплексная сеть архивов Perl. 2011. Получено 27 октября 2011.
  38. ^ Джеймс Бритт; Нейрогами. «Класс времени». Ruby-Doc.org: Справка и документация по языку программирования Ruby. Скоттсдейл, Аризона. Получено 27 октября 2011.
  39. ^ Югуи (18 августа 2010 г.). «Выпущен Ruby 1.9.2». Новая версия 1.9.2 почти совместима с 1.9.1, за исключением следующих изменений: ... Время переопределено. Исправлена ​​ошибка с 2038 годом.
  40. ^ "Использование командлета Get-Date". Документы Microsoft. Получено 23 июля 2019.
  41. ^ «Совет недели по Windows PowerShell - форматирование даты и времени». Документы Microsoft. Получено 23 июля 2019.

внешняя ссылка