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

Команда даты 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), дополнительных секунд и настроек локали пользователя . Также обычно предоставляются библиотечные подпрограммы, которые преобразуют календарное время в системное время.

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

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

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

История

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

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

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

Реализация

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

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

13 октября 2021 20:29:48 UTC

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

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

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

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

Операционная система Команда или функция разрешение Эпоха или диапазон
Android java.lang .System.currentTimeMillis () 1 мс 1 января 1970 г.
BIOS ( IBM PC ) INT 1Ah, AH = 00ч 54,9254 мс
18,2065 Гц
Полночь текущего дня
INT 1Ah, AH = 02h 1 с Полночь текущего дня
INT 1Ah, AH = 04h 1 день С 1 января 1980 г. по 31 декабря 1999 г. или 31 декабря 2079 г. (в зависимости от системы)
CP / M Plus Блок управления системой:
scb $ base + 58h , дней с 1 января 1978
scb $ base + 5Ah , час (BCD)
scb $ base + 5Bh , минута (BCD)
scb $ base + 5Ch , секунда (BCD)
1 с 1 января 1978 г. - сентябрь 2067 г.
BDOS функция 69h > ( T_GET ):
слово , дни с 1 января 1978
байт , Hour (BCD)
байт , минута (BCD)
байт , второй (BCD)
DOS ( Microsoft ) C: \>ДАТА
C: \>ВРЕМЯ
10 мс 1 января 1980 г. - 31 декабря 2099 г.
INT 21h, AH = 2Ch СИСТЕМНОЕ ВРЕМЯ
INT 21h, AH = 2Ah СИСТЕМНАЯ ДАТА
iOS ( Apple ) CFAbsoluteTimeGetCurrent () <1 мс 1 января 2001 ± 10 000 лет
macOS CFAbsoluteTimeGetCurrent () <1 мс 1 января 2001 ± 10 000 лет
OpenVMS SYS $ GETTIM () 100 нс 17 ноября 1858 г. - 31 июля 31 086
gettimeofday() 1 мкс 1 января 1970 г. - 7 февраля 2106 г.
clock_gettime() 1 нс
z / OS STCK 2 −12 мкс
244,14 пс
С 1 января 1900 по 17 сентября 2042 UT
STCKE 1 января 1900 г. - 36 765 г. н.э.
Unix , POSIX
(см. Также функции даты и времени C )
$дата
время ()
1 с (*)
1 января 1970 г. по 19 января 2038 г.
1 января 1970 г. до 292 277 026 596 н. Э.
gettimeofday() 1 мкс
clock_gettime() 1 нс
OS / 2 DosGetDateTime () 10 мс 1 января 1980 г. - 31 декабря 2079 г.
Окна GetSystemTime () 1 мс 1 января 1601 г. по 14 сентября 30 828 г.
GetSystemTimeAsFileTime () 100 нс
GetSystemTimePreciseAsFileTime ()

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

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

1 января 1970 г.
CPU_TIME 1 мкс
Идти time.Now () 1 нс 1 января 0001
Haskell Time.getClockTime 1 шт. (*) 1 января 1970 г. (*)
Data.Time.getCurrentTime 1 шт. (*) 17 ноября 1858 г. (*)
Джава java.util.Date ()
System.currentTimeMillis ()
1 мс 1 января 1970 г.
System.nanoTime () 1 нс произвольный
Clock.systemUTC () 1 нс произвольный
JavaScript , TypeScript (новая дата ()). getTime ()
Date.now ()
1 мс 1 января 1970 г.
Matlab Теперь 1 с 0 января 0000
Швабры $ H ( сокращение от $ HOROLOG ) 1 с 31 декабря 1840 г.
LabVIEW Счетчик тиков 1 мс 00: 00: 00.000 1 января 1904 г.
Получить дату / время в секундах 1 мс 00: 00: 00.000 1 января 1904 г.
Цель-C [NSDate timeIntervalSinceReferenceDate] <1 мс 1 января 2001 г. ± 10 000 лет
OCaml Unix.time () 1 с 1 января 1970 г.
Unix.gettimeofday () 1 мкс
Расширенный Паскаль GetTimeStamp () 1 с (*)
Турбо Паскаль GetTime ()
GetDate ()
10 мс (*)
Perl время() 1 с 1 января 1970 г.
Время :: HiRes :: время 1 мкс
PHP время ()
mktime ()
1 с 1 января 1970 г.
microtime () 1 мкс
PureBasic Дата() 1 с 1 января 1970 г. - 19 января 2038 г.
Python datetime.now (). отметка времени () 1 мкс (*) 1 января 1970 г.
РПГ ТЕКУЩИЙ (ДАТА) , % ДАТА
ТЕКУЩИЙ (ВРЕМЯ) , % ВРЕМЯ
1 с 1 января 0001 г. по 31 декабря 9999 г.
ТОК (TIMESTAMP) , TIMESTAMP% 1 мкс
Рубин Time.now () 1 мкс (*) 1 января 1970 г. (до 19 января 2038 г. до Ruby 1.9.2)
Болтовня Время микросекунды,
часы (VisualWorks)
1 с (ANSI)
1 мкс (VisualWorks)
1 с (писк)
1 января 1901 г. (*)
Общее время Секунды
(Писк)
SystemClock тикиNowSinceSystemClockEpoch
(Chronos)
SQL CURDATE () или CURRENT DATE
CURTIME () или CURRENT TIME
GETDATE ()
NOW () или CURRENT TIMESTAMP
SYSDATE ()
3 мс 1 января 1753 г. по 31 декабря 9999 г. (*)
60 с 1 января 1900 г. - 6 июня 2079 г.
Стандартный ML Time.now () 1 мкс (*) 1 января 1970 г. (*)
TCL [часы в секундах] 1 с 1 января 1970 г.
[часы миллисекунды] 1 мс
[часы микросекунды] 1 мкс
[щелчки часов] 1 мкс (*) (*)
Windows PowerShell Get-Date 100 нс 1 января 0001 г. по 31 декабря 9999 г.
[DateTime] :: Now
[DateTime] :: UtcNow
Visual Basic .NET System.DateTime.Now
System.DateTime.UtcNow
100 нс 1 января 0001 г. по 31 декабря 9999 г.

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

Примечания

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

использованная литература

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