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

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

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

Системные часы 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.

Начиная со второй версии ДудуЛинукс появляется возможность настроить дату и время или часовой пояс. Вы найдете обе утилиты в подкатегории“Система” вкладки “Параметры” сессии “Весь ДудуЛинукс” . Если вы пользуетесь загрузочным компакт-диском ДудуЛинукс и сохраняемость активирована, настройки сохраняются и будут работать в последующих сеансах работы. Это же касается системы, установленной на жесткий диск. Более того, в последнем случае если компьютер подключен к интернету, дата и время будут установлена автоматически благодаря серверам времени.

Дата и время

Утилита настройки даты и времени очень проста: можно изменить часы, минуты и сегодняшнее число. Установки сохраняются по нажатии кнопки Применить . Есть еще один параметр, флаговая кнопка UTC, который заслуживает внимания. Компьютер хранит время и дату при помощи часов, которые продолжают работать благодаря батарейкам и после его отключения, как обычные часы. Можно выставить эти часы по местному времени или по Гринвичу (UTC), тогда время не будет зависеть от вашего местоположения на Земле. В зависимости от этого параметра ДудуЛинукс будет прибавлять смещение часового пояса к UTC или нет. Так что если системное время отличается от вашего на несколько часов, сперва попробуйте изменить этот параметр.

Date and time

Обычно компьютеры под управлением Windows® используют местное время, а Unix системы, включая Linux, время по Гринвичу. Если вы загружаетесь с компакт-диска ДудуЛинукс на компьютере с установленной Windows® или установили ДудуЛинукс на жесткий диск такого компьютера (), лучше всего использовать местное время. Преимущество UTC в том, что она не требует постоянной настройки, т.к. системные часы довольно точные. Напротив, местное время надо менять при переходе на летнее время и когда вы перемещаетесь из одного часового пояса в другой.

Часовой пояс

Если надо изменить часовой пояс, воспользуйтесь утилиткой “Часовой пояс” . Это может помочь и в случае если системное время отличается от местного независимо от параметра UTC. Можно либо кликнуть на карте мира либо выбрать часовой пояс из списка. Пояса отсортированы по континентам и названы по большим городам. Если ваша страна небольшая, кликнуть на нужном месте карты может быть затруднительно, поскольку размер карты фиксированный и подогнан под маленькие мониторы.



Timezone selection

Автоматическая настройка времени (NTP)

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

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

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

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