В информатике и программировании системное время представляет собой представление компьютерной системы о течении времени. В этом смысле время также включает в себя течение дней в календаре .
Системное время измеряется системными часами , которые обычно реализуются как простой подсчет количества тиков , прошедших с некоторой произвольной начальной даты, называемой эпохой . Например, системы Unix и POSIX -совместимые кодируют системное время (« время Unix ») как количество секунд, прошедших с начала эпохи Unix 1 января 1970 года 00:00:00 UT , за исключением високосных секунд . Системы, реализующие 32- и 64-разрядные версии API Windows , такие как 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-битные значения.
Тесно связано с системным временем время процесса , которое является подсчетом общего времени ЦП, потребляемого исполняющимся процессом . Его можно разделить на пользовательское и системное время ЦП, представляющее время, потраченное на выполнение пользовательского кода и кода ядра системы соответственно. Время процесса представляет собой подсчет инструкций ЦП или тактовых циклов и, как правило, не имеет прямой корреляции со временем стены .
Файловые системы отслеживают время создания, изменения и/или доступа к файлам, сохраняя временные метки в блоке управления файлами (или inode ) каждого файла и каталога .
Большинство персональных компьютеров первого поколения не отслеживали дату и время. К ним относятся системы, работающие под управлением операционной системы CP/M , а также ранние модели Apple II , BBC Micro и Commodore PET и другие. Дополнительные периферийные платы , включавшие чипы часов реального времени с резервным питанием от встроенной батареи, были доступны для IBM PC и XT , но IBM AT был первым широко доступным ПК, который был оснащен аппаратным обеспечением даты/времени, встроенным в материнскую плату . До широкого распространения компьютерных сетей большинство персональных компьютеров, которые отслеживали системное время, делали это только относительно местного времени и не учитывали различные часовые пояса .
Благодаря современным технологиям большинство современных компьютеров отслеживают местное гражданское время, как и многие другие бытовые и персональные устройства, такие как видеомагнитофоны , цифровые видеорегистраторы , кабельные телевизионные приемники , КПК , пейджеры , сотовые телефоны , факсимильные аппараты , автоответчики , фотоаппараты , видеокамеры , центральные кондиционеры и микроволновые печи .
Микроконтроллеры, работающие во встроенных системах (таких как Raspberry Pi , Arduino и других подобных системах ), не всегда имеют внутреннее оборудование для отслеживания времени. Многие такие системы контроллеров работают без знания внешнего времени. Те, которым требуется такая информация, обычно инициализируют свое базовое время при перезагрузке, получая текущее время из внешнего источника, например, с сервера времени или внешних часов, или предлагая пользователю вручную ввести текущее время.
Системные часы обычно реализуются как программируемый интервальный таймер , который периодически прерывает работу ЦП, который затем начинает выполнять процедуру обслуживания прерывания таймера. Эта процедура обычно добавляет один тик к системным часам (простой счетчик) и обрабатывает другие периодические задачи по обслуживанию ( вытеснение и т. д.) перед возвратом к задаче, которую ЦП выполнял до прерывания.
В следующих таблицах показаны методы получения системного времени в различных операционных системах , языках программирования и приложениях . Значения, отмеченные (*), зависят от системы и могут различаться в разных реализациях. Все даты указаны в виде дат григорианского или пролептического григорианского календаря .
Разрешение измерения времени реализацией не подразумевает ту же точность таких измерений. Например, система может возвращать текущее время как значение, измеренное в микросекундах, но на самом деле быть способной различать отдельные тики часов с частотой всего 100 Гц (10 мс).
В OS/2 Warp 4 дата и время могут работать и после 2000 года, и даже после 2038 года, и фактически до 2079 года, что является пределом для часов реального времени OS/2 Warp 4.
В компоненте электронных таблиц Microsoft Office значение 0 соответствует дате 30 декабря 1899 г., а значение 1 соответствует 31 декабря 1899 г. ... В Excel значение 0 соответствует 0 января 1900 г., а значение 1 соответствует 1 января 1900 г.
Новая версия 1.9.2 почти совместима с 1.9.1, за исключением следующих изменений: ... Время переписано. Исправлена ошибка с 2038 годом.