Главная - Windows
Изменить системное время. Время

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

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков 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 - это

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

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

Но какие все-таки ошибки могут возникать при проблеме 2000? И грозит ли нам подобное в будущем?

Разные часы

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

Кстати, у старого компьютера такая батарейка может садиться, и, чтобы избежать отставания часов, необходимо ее заменить.

Ошибка 2000

Откуда взялась ошибка 2000? Да просто разработчики DOS не учли, что для хранения даты может понадобиться больше двух цифр. Поэтому при наступлении 2000 года система могла начать считать, что наступил год 1900. Или, как вариант, год 1980, если система отсчитывает от него.

К каким ошибкам в реальности это приводило? Нет, техника не сошла с ума. Атомных взрывов не было. А вот некоторые программы бухгалтерского учета действительно перестали работать корректно, в том числе, первые версии . Просто попытка посчитать итоги на 2000 год приводила к тому, что система считала их на 1900 и выдавала нули. В более продвинутых была возможность задать "год начала столетия", и, тем самым, все-таки получить сдвинутый рабочий интервал в 100 лет.

Я лично столкнулся с проблемой 2000. Имевшаяся у меня версия MikTeX больше не могла устанавливаться. Для успешной установки необходимо было временно установить время до 2000 года. Так что, хоть ничего безумного и не произошло, с неудобствами пользователям столкнуться пришлось. Но тогда еще не так активно использовались компьютеры! Что же ждет нас в будущем?

Ошибка 2038

А вот эта проблема приходит к нам из Unix-подобных систем. Изначально в них было заложено время, измеряемое в секундах, с отсчетом от 01.01.1700 - года принятия Григорианского календаря (см. комментарии, там исправление). При этом в переменной также используется знак, поэтому на деле используется только 31 бит, что приводит к тому, что время закончится в 03:14:07, вторник, 19 января 2038 года.

Что произойдет в этот момент на 32-битной Unix-системе? Время станет отрицательным. Компьютер попытается записать в аппаратные часы год 1700 (или еще меньший), биос этого не примет и запишет 1900 или 1980. Так или иначе, время снова закольцуется, приводя к сбою в программах, этого не ожидающих.

И дело даже не только в Unix-системах. Многие программы также используют такой стиль хранения времени, например, дата файла, находящегося в zip-архиве, хранится именно так. Так что проблемы будут у всех. А вот серьезность бедствия предсказать пока сложно.

Ошибка 2100

А здесь уже дело в аппаратных часах современных компьютеров. В основном, они сейчас рассчитаны, что максимальный год - это 2099. Так что даже если операционная система понимает большее время, биос запишет в свои часы что-нибудь типа 1980.

Кстати, эту уязвимость уже использовали хакеры для взлома Windows Vista. Перед установкой предлагалось установить время на конец 2099 года. В таком случае при прибавке 30 дней (периода, в течении которого можно использовать Висту без активации) получалась странная дата, что приводило к отключению таймера.

Ошибка 10000

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

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

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

Локальное системное время (системное время) Локальное системное время получается путем прибавления к временем по Гринвичу указанных в часовом поясе системы значений разности с временем по Гринвичу и разности лет. Системное значение времени суток содержит именно локальное системное время. Понятия системного времени и локального системного времени эквивалентны. Локальное время задания Локальное время задания получается путем прибавления к временем по Гринвичу указанных в часовом поясе задания значений разности с временем по Гринвичу и разности лет. Локальные дату и время задания можно просмотреть на странице Дата/Время, содержащей свойства задания. Мировое время (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.



 


Читайте:



Что делать если в evolve offline

Что делать если в evolve offline

Наконец посетила рынок компьютерных игр, озарив его светом инопланетных монстров и высокотехнологичных пушек. Естественно, что такой необычный...

Тестируем процессор на перегрев

Тестируем процессор на перегрев

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

Что такое есиа госуслуги

Что такое есиа госуслуги

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

Расположение головок на антенне

Расположение головок на антенне

Статья раскрывает основные методы, как определить азимут с использованием магнитного компаса и места его возможного применения. Использование...

feed-image RSS