Системное время компьютера. Дата, время и часовой пояс

Эта страница нуждается в сопроводителе

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

В операционной системе время (часы) определяется четыремя понятиями: значение времени, стандарт времени, часовой пояс и, если необходимо, летнее время (Daylight Saving Time (DST)). В этой статье рассказывается о каждом из них, а также как прочитать/установить их значения.

Contents

Введение

Аппаратные часы встроены в ваш компьютер, предоставляют информацию о годе, месяце, дне, часе, минуте и секунде и работают, даже когда он выключен. Они могут вести отсчет местному (локальному) времени или времени в стандарте UTC . Подробнее на Википедии . Фактически, местное время - это то время, которое показывают ваши обычные часы (к примеру, любимые часы вашей бабушки), а время UTC, не вдаваясь в подробности, едино для всех жителей земного шара, точкой отсчета для которого является Гринвичский меридиан. По отношению ко времени UTC, ваше локальное время может отличатся на несколько часов. Поскольку вы читаете именно русскоязычный вариант статьи, то, скорее всего, ваше локальное время больше от трех до двенадцати часов по сравнению с UTC .

Все наиболее распространенные системы могут использовать локальное или UTС-время. По умолчанию, UNIX-подобные операционные системы (включая Mac OS) используют UTС, в то время как Windows использует локальное время. В случае если у вас на компьютере установлено несколько операционных систем, лучше всего будет использовать в них UTC чтобы избежать конфликтов.

В UNIX-подобных операционных системах аппаратные часы могут быть проверены и сконфигурированы командой hwclock .

Кроме аппаратных часов, Linux также имеет системные (программные) часы, которые работают независимо. Системные часы отслеживают время,часовой пояс и контролируют, используется ли в вашей локали (локаль, как вы помните, настраивалась при установке системы в фале /etc/locale.conf) летнее время. Демон /etc/rc.d/hwclock предоставляет работу с командой hwclock и устанавливает системное время по аппаратным часам при загрузке операционной системы и наоборот, корректирует аппаратное время при завершении ее работы (ведь при своей работе операционная система может узнать более точное время, например от NTP-сервера). Таким образом, пользователи должны включать демон "hwclock" в массив DAEMONS в /etc/rc.conf , чтобы это происходило автоматически. В качестве альтернативы этому демону, пользователи часто используют NTP для синхронизации времени с т.н. серверами времени в интернете.

Стандарты времени

Все наиболее распространенные операционные системы могут использовать локальное или UTС-время. По умолчанию, UNIX-подобные операционные системы (включая Mac OS) используют UTС, в то время как Windows использует локальное время. В случае если у вас на компьютере установлено несколько операционных систем, лучше всего будет использовать в них UTC чтобы избежать конфликтов. GNU/Linux будет переходить на летнее время и обратно автоматически, только в том случае, если вы используете UTC, независимо от того, летнее или зимнее время сейчас. Если вы используете местное время, GNU/Linux не будет осуществлять переход, предполагая, что у вас несколько операционных систем и другая операционная система сделает это за нее. Если это не так, то вам придется переводить часы вручную.

Вы можете установить стандарт временного отсчета средствами командной строки. Для начала проверьте, какой стандарт вы выбрали, когда устанавливали систему:

$ grep ^HARDWARECLOCK /etc/rc.conf

Если вы используете также Windows, то лучшим выбором будет localtime . Чтобы изменить стандарт временного отсчета на локальное время, используйте:

# hwclock --localtime

Или установить стандарт UTC:

# hwclock --utc

После этих операций скорее всего придется обновить ваши аппаратные и системные часы. См. ниже .

Часовой пояс

Удостоверьтесь что вы правильно указали ваш часовой пояс в /etc/rc.conf , это значения используется не только для часов, но и для других программ. Чтобы проверить значение, введите:

$ grep ^TIMEZONE /etc/rc.conf

Вы можете просмотреть полный список часовых поясов в файле /usr/share/zoneinfo/ и выберите крупный город в одном с вами часовом поясе. Если вы плохо разбираетесь в географии, то вы всегда сможете посетить страницу в Википедии , на которой приведен полный список часовых поясов. Кроме указания ближайшего города, вы также можете выбрать часовой пояс непосредственно. Пример:

TIMEZONE="America/Chicago"

Выбранный часовой пояс будет подхвачен системой после перезагрузки. Для того, чтобы изменить часовой пояс немедленно, в должны создать ссылку или скопировать соответствующий файл в /etc/localtime:

# cp /usr/share/zoneinfo/America/Chicago /etc/localtime

Установка времени

Аппаратные часы могут быть установлены по системным. Посмотрите, какое время установлено на ваших аппаратных часах:

$ hwclock --show

И системных часах:

Чтобы установить аппаратные часы непосредственно:

# hwclock --set --date "MM/DD/YYYY hh:mm:ss"

Установить системные часы:

# date MMDDhhmmYYYY

Аппаратные часы можно установить по системным и наоборот:

# hwclock --systohc # hwclock --hctosys

Если нет файла rc.conf

Для того, чтобы сравнить системное время и UTC:

$ timedatectl status

Для установки системных часов:

# timedatectl set-time "2012-10-30 18:17:16"

Изменить Вашу зону и субзону:

# timedatectl set-timezone Zone/SubZone

Лист доступных зон:

$ timedatectl list-timezones

Пример установки зон:

# timedatectl set-timezone Europe/Moscow

Погрешность часов

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

Каждый раз перед выключением демон hwclock сравнивает аппаратное и системное время (последнее принимается за наиболее точное) и вычисляет погрешность аппаратных кварцевых часов в день. Вычисленное значение погрешности записывается в файл /var/lib/hwclock/adjtime . Если hwclock не использовался больше суток, то он, на всякий случай, вычисляет новое значение погрешности.

Специальный скрипт корректирует аппаратные часы в соответствии с вычисленной погрешностью каждый час. Если вы видите, что ваши аппаратные часы идут все более и более неверно, то, вероятнее всего, в файле /var/lib/hwclock/adjtime записано неверное значение погрешности.

Это происходит если на аппаратных часах время изначально было установлено неверно или ваш временной стандарт (см. выше) не такой как у другой операционной системы, используемой на компьютере. Чтобы исправить это, удалите /var/lib/hwclock/adjtime и настройте время на всех ваших часах.

Примечание: Если вы всегда выключаете свой компьютер чаще чем раз в сутки, погрешность, записанная в /var/lib/hwclock/adjtime не будет перепроверяться hwclock . Кварцевый генератор , конечно, надежная штука, но со временем параметры его могут меняться (например батарейка CMOS разряжается). Возможно, стоит иногда выключать компьютер реже чем раз в сутки. Тогда можно быть уверенным, что значение погрешности, по которому корректируются часы, будет самым новым, а часы самыми точными.

Системное время рассчитывается ядром, начиная с полуночи первого января 1st 1970 по стандарту UTC. Начальное значение системных часов рассчитываается исходя из показаний часов аппаратных (после корректировки погрешности и пересчета на местный часовой пояс UTC) при включении и идут независимо от аппаратных. Ядро Linux отслеживает системные часы, подсчитывая прерывания таймера. Как и аппаратные, они не являются идеально точными. Иногда системные часы могут потерять точность, если ядро сбрасывает прерывания. Но показания системынх часов можно сделать точными с помощью NTP . NTP будет регулировать частоту прерываний и количество тактов в секунду для уменьшения дрейфа системных часов. Эти значения могут быть скорректированы с помощью приложения adjtimex из AUR.

Примечание: Если вы не используете NTP, то ваши аппаратные часы будут более точными, чем системные. Соответственно описанный механизм корректировки будет только вносить дополнительную погрешность и его лучше отключить. Для этого можно закомментировать строку hwclock --systohc в файле { /etc/rc.d/hwclock . Теперь при выключении компьютера система не будет изменять значение ваших аппаратных часов.

Синхронизация времени

Протокол синхронизации времени (NTP) - это протокол для синхронизации часов компьютера с помощью пакетов в сетях с переменными задержками доставки данных. Вот реализации этого протокола:

  • Network Time Protocol daemon (Русский) - это Wikipedia:ru:эталонная реализация протокола, особенно рекомендуется к использованию на серверах времени. Он также регулирует частоту прерываний и количество тактов в секунду, чтобы уменьшить дрейф системных часов, и будет снова синхронизировать аппаратные часы каждые 11 минут.
  • sntp - это

С используемым в системе временем связаны следующие понятия: часовые пояса, мировое время (время по Гринвичу), время системы, время задания. Любая система или раздел используют системное время. Системное время отображается посредством системного значения времени суток.

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

Локальное системное время (системное время) Локальное системное время получается путем прибавления к временем по Гринвичу указанных в часовом поясе системы значений разности с временем по Гринвичу и разности лет. Системное значение времени суток содержит именно локальное системное время. Понятия системного времени и локального системного времени эквивалентны. Локальное время задания Локальное время задания получается путем прибавления к временем по Гринвичу указанных в часовом поясе задания значений разности с временем по Гринвичу и разности лет. Локальные дату и время задания можно просмотреть на странице Дата/Время, содержащей свойства задания. Мировое время (UTC) Мировое время (время по Гринвичу) применяется для вычисления локального системного времени и времени заданий. Локальное системное время вычисляется путем прибавления к мировому времени значений разности с временем по Гринвичу и разности лет. Разность с временем по Гринвичу Разность между мировым временем (UTC, временем по Гринвичу) и локальным системным временем, выраженная в часах и минутах. Отрицательное значение соответствует отклонению к западу от Гринвича, а положительное - к востоку от Гринвича. Разность лет Разность лет указывает на сколько лет отличается текущий год календаря, используемого системой для данного часового пояса, от григорианского календаря. Сезонное время Сезонное время (DST) - это часть года, когда местное время опережает стандартное официальное время для данного региона. Разница сезонного времени Разница сезонного времени - это количество минут, на которое местное время передвигается вперед при переходе на летнее время или назад - при переходе на зимнее время. Часовой пояс Параметры Часового пояса определяют разность с временем по Гринвичу, а также указывают, применяется ли сезонное время. У каждого логического раздела системы может быть свой часовой пояс.

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

На рисунке изображены две системы в двух разных часовых поясах. Система А находится в стандартном центральном часовом поясе, а система B - в стандартном пекинском часовом поясе.

Значения системного времени этих систем таковы:

Система A Система B
Локальное системное время 10:00 20:00
Локальное время задания 10:00 20:00
Часовой пояс Центральная часть США Москва
Разность с временем по Гринвичу -6:00 +4:00
Время по Гринвичу 16:00 16:00

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

В ветке реестра HKEY_CURRENT_USER => Control Panel => International находится строковый параметр sTimeFormat , который отвечает за привычный нам формат отображения времени. Значение этого параметра по умолчанию H:mm:ss . Если данному параметру присвоить любое другое значение, то оно будет отображаться на экране вместо часов.

Ниже приведен REG-файл, в котором параметру установлено значение Тик-Так:

“sTimeFormat”=”Тик-Так”

(пустая строка)

Перезагрузите компьютер - теперь вместо привычного времени в правом нижнем углу монитора отобразится введенное значение. Для возврата в исходное состояние верните параметру sTimeFormat значение HH:mm:ss и так же перезагрузите компьютер.

Учтите, что длина значения параметра sTimeFormat не должна превышать восемь символов.

После изменения формата времени введенный текст будет отображаться вместо системного времени. Однако в системе реализована возможность отображения произвольного текста одновременно с показом времени. В этой же ветке реестра параметру sTimeFormat присвойте значение в формате HH:mm Текст , например:

HH:mm Час пик

Где “HH:mm” – это отображаемое время, а “Час пик” – это отображаемый текст (напомню – не более 8 символов).

Windows Registry Editor Version 5.00

“sTimeFormat”=”HH:mm Час пик”

(пустая строка)

Для того, чтобы изменения вступили в силу, перезагрузите компьютер.

sTimeFormat значение H:mm:ss и перезагрузите компьютер.
Так же, редактируя параметр sTimeFormat, вы можете изменить тип разделителя символов в системных часах или поменять местами отображение часов и минут (mm:HH). Для этого достаточно поменять местами буквы mm и HH, выставив их в том порядке, в каком вы хотите видеть время. И, если вам захочется изменить разделитель часов и минут, то просто смените символ двоеточия на нужный вам символ.

Соответствующий REG-файл будет выглядеть так:

Windows Registry Editor Version 5.00

“sTimeFormat”=”mm-HH”

(пустая строка)

После перезагрузки компьютера у вас время будет отображаться, например, не как: “21:25”, а как: “25-21”. В принципе вы можете изменить (при желании) только один из этих двух параметров.

Чтобы вернуть первоначальный формат отображения системного времени, вновь присвойте параметру sTimeFormat значение H:mm:ss и перезагрузите компьютер.

Очень интересный фокус: отображаемая рядом с часами надпись меняется в зависимости от времени суток. Для этого войдите в ветвь редактора реестра HKEY_CURRENT_USER => Control Panel => International, где вам необходимо создать 2 строковых параметра с именами s1159 и s2359 . Значение, присвоенное первому параметру, будет отображаться рядом с часами в утреннее время, а значение второго параметра - в вечернее. Самому параметру sTimeFormat необходимо присвоить значение HH:mm:ss tt .

Ниже приведен текст REG-файла, в котором параметру s1159 присвоено значение “С добрым утром” , а параметру s2359 присвоено значение “Добрый вечер”:

Windows Registry Editor Version 5.00

"s1159"="С добрым утром"

"s2359"="Добрый вечер"

"sTimeFormat"="HH:mm:ss tt"

(пустая строка)

Для возврата в исходное состояние нужно вернуть параметру sTimeFormat значение H:mm:ss и удалить введенные параметры s1159 и s2359 .

При выполнении вышеописанных трюков с системными часами следует учитывать, что соответствующие изменения могут проявиться и в других местах и режимах работы - например, при получении и отправке писем в почтовой программе Outlook Express.

Системные часы Windows 8 располагаются в Области уведомлений , размещающейся в правой части Панели задач. В обычном режиме они демонстрируют текущее время, если на несколько секунд задержать над ними курсор мыши, на экране появится всплывающая подсказка с указанием сегодняшней даты. Однократный щелчок мышью (или нажатие) на системных часах откроет диалоговое окно, в котором вам будет продемонстрирована текущая дата, календарь и циферблат часов, демонстрирующих системное время. Для того чтобы настроить часы и календарь, щелкните мышью на надписи Изменение настройки даты и времени (Change date and time settings ) в нижней части данного окна (рис. 2.5).

Рис. 2.5. Окно настройки даты и времени

Вкладка Дата и время (Date and time ) диалогового окна Дата и время (Date and time ) позволяет настроить текущую дату и системное время. Для этого нажмите на кнопку Изменить дату и время (Change date and time ) в верхней части данного окна. В отобразившемся на экране диалоговом окне Настройка времени и даты (Date and time settings ) демонстрируется календарь, в котором текущая дата отмечена голубоватой подсветкой. Чтобы выбрать в этом календаре другой месяц, воспользуйтесь кнопками с изображением черных стрелок справа и слева от обозначения текущего месяца, либо однократно нажмите на обозначение года, чтобы получить список месяцев с января по декабрь. Повторное нажатие на обозначение года отобразит на экране список лет, в котором вы сможете выбрать требуемый год.

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

Если вы желаете изменить часовой пояс, щелкните мышью на кнопке Изменить часовой пояс (Change time zone ) в нижней части окна Дата и время (Date and time ) . Развернув размещающееся в верхней части окна меню, вы можете выбрать из списка требуемый часовой пояс.

В ОС Windows 8 можно включить отображение дополнительных системных часов, демонстрирующих текущее время в другом регионе или часовом поясе: это бывает удобно в том случае, если, например, кто-либо из ваших родственников или друзей проживает в удаленной географической точке, и иногда вам необходимо узнать, сколько сейчас времени в его городе, не выполняя при этом подсчетов. Чтобы включить дополнительные часы, в окне Дата и время (Date and time ) откройте вкладку Дополнительные часы (Additional clocks ) и установите флажок Показать эти часы (Show this clock ) . В меню Выберите часовой пояс (Select time zone ) вы можете указать временную зону для выбранных часов, а в поле Отображаемое имя (Enter display name ) — набрать произвольное имя часов: скажем, название населенного пункта, в котором часы демонстрируют время, например, «Нью-Йорк». Windows 8 позволяет включать два экземпляра дополнительных часов: добавить еще одни часы вы можете установкой флажка Показать эти часы (Show this clock ) в нижней части окна. Настраиваются они аналогичным образом.

Чтобы настроить автоматический механизм корректировки системных часов, перейдите к вкладке Время Интернета (Internet Time) диалогового окна Дата и время (Date and time ) и нажмите на кнопку Изменить параметры (Change settings ). Функция Синхронизация с сервером времени в Интернете (Synchronize with an Internet time server ) позволяет автоматически синхронизировать системные часы Windows по эталонному времени, передаваемому операционной системе специализированными серверами сети Интернет. В качестве такой службы по умолчанию предлагается сервер time.windows.com , однако пользователь может ввести в поле Сервер (Server) адрес любого другого узла, настроенного на автоматическую синхронизацию системных часов Windows 8.