Что такое системные часы
Системные часы
Современные компьютеры используют часы реального времени, доступ к которым возможен с помощью утилит, либо через экран настройки BIOS, в ходе загрузки операционной системы.
Системные часы инициализируются от аппаратных при загрузке операционной системы, и далее системное время поддерживаются с помощью регулярных прерываний от таймера. Например, в системе Linux текущее время можно узнать в командной строке с помощью команды date, а показания аппаратных часов — hwclock. Для установки времени по локальной сети или через Интернет может использоваться протокол NTP Разные операционные системы могут устанавливать системные часы в соответствии с локальным временем. В операционной системе Linux Ubuntu по умолчанию подразумевается, что часы установлены в соответствии с UTC — всемирным координированным временем — в отличие от Windows, а уже показания времени в пользовательском интерфейсе зависят от выбранной временной зоны.
Точность времени зависит от многих факторов, таких как состояние аккумулятора, типа микросхемы и т. п. В случае сбоя питания дата и время обычно устанавливаются на год выпуска версии BIOS.
Связанные понятия
Упоминания в литературе
Связанные понятия (продолжение)
Подсистема клиент/сервер времени выполнения (англ. Client/Server Runtime Subsystem, CSRSS) или csrss.exe, входит в состав операционной системы Microsoft Windows NT, и представляет собой часть пользовательского режима подсистемы Win32. Включена в состав Windows 2000, Windows XP, Windows 2003, Windows Vista, Windows Server 2008 и Windows 7. Поскольку большинство операций подсистемы Win32 были перенесены в режим ядра, а конкретнее в драйверы режима ядра, в Windows NT 4 и выше CSRSS в основном отвечает.
Многопользовательское, мультерминальное или терминальное решение позволяет организовать на базе одного компьютера несколько независимых мест — терминалов — с возможностью одновременной работы.
Вся правда об ОСРВ. Статья #27. Системное время
Понятие времени в контексте ОСРВ была введена в одной из предыдущих статей, вместе с идеей о связанных со временем функциях, доступных в ОСРВ.
Тик таймера
Все функции, связанные со временем, управляются аппаратными часами. Это простой осциллятор, который генерирует запросы на прерывание с постоянными интервалами. Чтобы номера тактов имели смысл для прикладных программ, частота генератора должна быть известна.
Обработки таймерных прерываний
Прерывания, генерируемые аппаратным таймером, должны обслуживаться определенным образом в обработчике прерываний (англ. Interrupt Service Routine, ISR), в котором реализованы все функции ОСРВ, связанные со временем. Детали обработчика прерываний таймера в Nucleus SE будут рассмотрены в одной из следующих статей.
Функции, связанные со временем
Nucleus RTOS и Nucleus SE содержат несколько механизмов, связанных со временем:
Точность
А сейчас стоит вкратце рассказать о точности системного таймера.
Точность временных функций напрямую зависит от частоты тактового генератора. Например, если импульсы поступают каждые 10 миллисекунд, а задаче приложения необходима задержка в 100 миллисекунд, ей очевидно нужно 10 импульсов. Однако неизвестно, когда был получен предыдущий импульс: это могло произойти только что или почти 10 миллисекунд назад. Поэтому 100-миллисекундная задержка может занять вплоть до 110 миллисекунд.
Очевидный способ решения этой проблемы — повышение частоты генератора. Если импульсы следуют с интервалами в 1 миллисекунду, 100-миллисекундная задержка никогда не займет больше ста одной миллисекунды. Недостатком такого решения будет то, что обработчика прерываний таймера заберет в 10 раз больше процессорного времени, что будет чрезмерным. Разработчик системы должен найти баланс между необходимой точностью таймера и доступными мощностями процессора.
Настройка системного времени
Как и для большинства объектов Nucleus SE, настройка системного времени по большей части управляется директивами #define в файле nuse_config.h. Основным параметром является NUSE_SYSTEM_TIME_SUPPORT, который активирует механизм поддержки системного времени. Количество объектов указывать не нужно: системное время либо активировано, либо нет.
Выбор ненулевого значения является главным активатором системного времени. Этот параметр используется при определении структур данных, о которых будет подробно рассказано далее в этой статье. Кроме того, ненулевое значение активирует настройки API.
Активация API
Каждая функция API (служебный вызов) в Nucleus SE имеет активирующую директиву #define в файле nuse_config.h. Для системного времени такими символами являются:
NUSE_CLOCK_SET
NUSE_CLOCK_RETRIEVE
По умолчанию, им присваивается значение FALSE, таким образом все служебные вызовы отключены, блокируя включение реализующего их кода. Для настройки системного времени в приложении нужно выбрать необходимые служебные вызовы API и присвоить им значение TRUE.
Ниже приведен фрагмент кода из файла nuse_config.h по умолчанию.
При попытке использования служебного вызова API системного времени при выключенном активаторе системного времени произойдет ошибка компиляции. Если ваш код использует вызов API, который не был активирован, произойдет ошибка компоновки, так как код реализации не был включен в приложение.
Служебные вызовы системного времени
Nucleus RTOS поддерживает два служебных вызова, которые относятся к системному времени и обеспечивают следующий функционал:
Служебные вызовы установки и получения системного времени
С системным временем можно выполнять только операции установки в заданное значение и получения текущего значения. Nucleus RTOS и Nucleus SE предоставляют по два базовых вызова API для реализации этих операций.
Интерпретация значения системного времени зависит от приложения, так как является по своей сути счетчиком количества «тактов» часов, которые произошли с момента последнего сброса счетчика. Для использования этой информации должна быть известна частота генератора.
Установка времени
Любая задача может установить системное время при помощи вызова этой функции API.
Вызов для установки системного времени в Nucleus RTOS
Прототип служебного вызова:
VOID NU_Set_Clock(UNSIGNED new_value);
Параметры:
new_value – значение, которое будет присвоено системному времени
Возвращаемое значение: отсутствует.
Вызов для установки системного времени в Nucleus SE
Этот вызов API поддерживает основной функционал Nucleus RTOS API.
Прототип служебного вызова:
void NUSE_Clock_Set(U32 new_value);
Параметры:
new_value – значение, которое будет присвоено системному времени
Возвращаемое значение: отсутствует
Реализация установки времени в Nucleus SE
Код очень прост. Предоставленное значение записывается в NUSE_Tick_Clock внутри критической секции.
Получение системного времени
Задача может получить значение системного времени при помощи этой функции API.
Вызов для получения системного времени в Nucleus RTOS
Прототип служебного вызова:
UNSIGNED NU_Retrieve_Clock(VOID);
Возвращаемое значение: текущее значение системного времени
Вызов для получения системного времени в Nucleus SE
Прототип служебного вызова:
U32 NUSE_Clock_Retrieve(void);
Возвращаемое значение: текущее значение системного времени
Реализация получения времени в Nucleus SE
Код очень прост. Функция возвращает значение NUSE_Tick_Clock, полученное в критической секции.
Структуры данных
Системное время использует одну структуру данных (находящуюся в ОЗУ), которая представляет из себя 32-битное слово.
Настоятельно рекомендую, чтобы код приложения не использовал прямой доступ к этой структуре данных, а обращался к ней через предоставляемые функции API. Это позволит избежать несовместимости с будущими версиями Nucleus SE и нежелательных побочных эффектов, а также упростит портирование приложений на Nucleus RTOS. Подробная информация о структурах данных приведена ниже, чтобы упростить понимание работы кода служебных вызовов и для отладки.
Данные ОЗУ
Структура данных:
NUSE_Tick_Clock – переменная типа U32, в которой хранится счетчик тактов системного времени.
Эта структура данных инициализируется нулём функцией NUSE_Init_Task() при запуске Nucleus SE. Одна из следующих статей будет содержать полное описание процедур запуска Nucleus SE.
Данные ПЗУ
В ПЗУ нет структур данных, связанных с системным временем.
Объем памяти для системного времени
Как и у всех других объектов Nucleus SE, объем памяти, необходимый для системного времени, предсказуем.
Объем памяти в ПЗУ равен 0.
Объем памяти в ОЗУ (в байтах) всегда равен 4.
Нереализованные вызовы API
Все служебные вызовы API Nucleus RTOS, относящиеся к системному времени, имеют эквивалент в Nucleus SE.
Совместимость с Nucleus PLUS
Как и в случае со всеми другими объектами Nucleus SE, моей целью было обеспечение максимально возможной совместимости кода приложений с Nucleus RTOS. Системное время не является исключением и, с точки зрения пользователя, оно реализовано во многом также, как и в Nucleus RTOS. Вызовы API Nucleus RTOS могут быть напрямую перенесены на Nucleus SE.
В следующей статье мы рассмотрим программные таймеры.
Часы реального времени или RTC: как работает это оборудование
Любой поклонник электроники или компьютеров знает, что компьютеры, которые мы используем каждый день, оснащены часы реального времени и что благодаря аккумулятору, встроенному в материнскую плату, часы всегда идут вовремя, даже когда компьютер отключен от сети. ручей. Но вы когда-нибудь задумывались Как это работает и особенно, каково использование ПК с этими внутренними часами?
У внутренних часов реального времени ПК есть утилита, которая выходит далеко за рамки показа времени на панели задач, и это означает, что, как мы буквально объясним ниже, ПК не мог бы работать без них. Почему? Мы сразу же подробно объясним вам это, но в качестве предварительного просмотра мы скажем вам, что без этих часов процессор ПК не знал бы, когда он должен выполнять вычисления.
Что такое часы реального времени или RTC и для чего они нужны?
RTC можно найти как в компьютерах (настольных и портативных), так и в интегрированных системах, серверах и любых электронных компонентах, имеющих процессор, поскольку для этих элементов требуется точный хронометр для их работы, как мы вскоре объясним. Очень важно иметь возможность продолжать работать, даже когда компьютер выключен или если батарея разряжена, поэтому обычно они носят с собой батарея в формате CR1220 или CR2032 что гарантирует автономную работу на долгие годы.
ИС RTC регулируют время с помощью кварцевого генератора, поэтому они не зависят от тактовых сигналов, как большинство аппаратных часов (например, ЦП, который зависит от этих часов реального времени). Помимо функции синхронизации системы и ее часов, часы реального времени гарантирует, что все процессы в системе правильно синхронизированы, что важно для работы ЦП. Хотя некоторые могут возразить, что это работа внутренних системных часов, на самом деле это зависит от часов реального времени.
Преимущества использования RTC на ПК:
Как работает RTC на ПК?
Некоторые RTC имеют встроенную температурную компенсацию, которая может расширить и повысить точность кварцевого генератора. Кристаллы также стареют, и это меняет их физическую природу, так что со временем они теряют точность. Типичные недорогие кристаллы, используемые в аппаратном обеспечении ПК, имеют допуск по частоте +/- 20 ppm (частей на миллион). Это означает, что кристалл с такой погрешностью может дрейфовать до 72 мс в час или 1.7 секунды в день, поэтому иногда потребуется калибровка.
Процессор, подключенный к RTC, получает обновленное системное время и постоянно записывает это новое значение в RTC, чтобы избежать этих отклонений, то есть CPU постоянно калибрует RTC чтобы всегда быть точным.
Системное время
Системное время использует системные часы и используется в Unix системах для слежения за временем. Его можно установить с помощью аппаратных часов или с помощью внешнего сервера времени.
Contents
Предисловие
Программные или аппаратные часы
Системные часы, предоставляемые ядром, реализуются простым подсчетом числа секунд, прошедших с 1 января 1970 года 00:00:00 UTC по настоящее время. Это число называется Unix-время.
Аппаратные часы, также известные как часы реального времени (real-time clock или RTC), обычно представляют из себя элемент материнской платы. Они работают все время, независимо от состояния операционной системы, даже когда компьютер выключен.
UTC или местное время
Настройка времени аппаратных часов может быть осуществлена исходя из двух стандартов: локальное время или время UTC. Локальное время — это реальное время часового пояса, учитывающее переход на DST. Предпочтительно использовать UTC, поскольку системное время вычисляется посредством прибавления к нему разницы времени часового пояса с учётом летнего времени. Благодаря этому перевод часов на летнее время учитывается автоматически, а изменение часового пояса возможно без изменения значения аппаратных часов. Исключение может быть сделано при использовании систем с двойной загрузкой, когда одна операционная система не поддерживает или не настроена для аппаратных часов с UTC (по умолчанию Windows настроена на использование локального времени).
Конфигурация
Часовой пояс
Для поддержания правильного исчисления времени необходимо выбрать соответствующий часовой пояс, чтобы системе было известно её текущее местоположение.
OpenRC
systemd
В systemd существует команда timedatectl для настройки часового пояса:
Проверка текущего часового пояса:
Вывод доступных часовых поясов:
Чтобы изменить часовой пояс, пример для Германии:
LC_TIME
Эта переменная окружения определяет форматирование даты и времени. Для более детальной информации смотрите The GNU C Library
Системные часы
Обычно время системных часов устанавливается аппаратными часами во время загрузки системы. Также системные часы возможно установить вручную либо с помощью сервера сетевого времени.
Для изменения системного времени можно воспользоваться командой date :
Вывод текущего времени программных часов:
Установка нового системного времени, например на 6 мая 2016 года в 12:34:
Сервер времени
Смотрите статью NTP, чтобы получить информацию по использованию сервера времени.
systemd
systemd существует команда timedatectl для управления системным временем:
Вывод текущего времени программных часов:
Установка системного времени:
Аппаратные часы
Чтобы получить доступ к аппаратным часам, нужно собрать ядро со следующими включенными параметрами:
Следующая команда выводит текущее на данный момент время аппаратных часов:
Следующая команда устанавливает время аппаратных часов в соответствии с системным временем:
Синхронизация аппаратных часов и системного времени
Обычно аппаратные часы используются при загрузке для установки системного времени. Это может быть осуществлено ядром самостоятельно, либо с помощью загрузочного сервиса init-скрипта при загрузке. Завершение работы ядра или сервиса также может вызвать сохранение времени системных часов в аппаратные часы. Благодаря этому у системы будет правильное время при следующей загрузке.
Синхронизация с помощью ядра
В свежих версиях (3.9 и выше) ядро Linux можно сконфигурировать таким образом, чтобы оно устанавливало системное время автоматически. Чтобы добиться этого, необходимо включить в ядре параметры Set system time from RTC on startup and resume ( CONFIG_RTC_HCTOSYS ) и Set the RTC time based on NTP synchronization ( CONFIG_RTC_SYSTOHC ):
Чтобы убедиться, что время аппаратных часов обновилось, установите пакет net-misc/adjtimex и запустите следующую команду:
Выведенное число 64 бит должно быть не задано (0). Более подробная информация в man-странице hwclock (ищите ’11 minute mode’).
OpenRC
Перезапустите сервис hwclock и добавьте его init-скрипт в уровень запуска boot:
systemd
Для установки системного времени во время загрузки можно использовать systemd. Для управления аппаратными часами используйте команду timedatectl :
Вывод текущего времени аппаратных часов:
Следующая команда устанавливает аппаратные часы в соответствии с системным временем (в стандарте времени UTC):
Следующая команда устанавливает аппаратные часы в соответствии с системным временем в стандарте времени localtime (местное время):
Устранение проблем
Двойная загрузка с Windows
Системы с возможностью загрузки другой операционной системы, например Windows, обычно будут испытывать проблемы с переназначением аппаратных часов. Чтобы сделать так, чтобы Windows не меняла аппаратные часы назад в локальное время, добавьте в реестр следующую запись.
Часы на компьютере
Содержание:
Часы на компьютере (или системные часы) – встроенный таймер материнской платы компьютера, который содержит в себе специальный кварцевый механизм, подобный тому, какой используется в обычных современных часах. Он отвечает за правильный отсчёт времени и работает либо от батарейки BIOS, либо от собственного отдельного аккумулятора (на старых материнских платах).
Как правило, часы на компьютере располагаются в углу панели задач, где отображают текущее время, дату и день недели. В большинстве случаев они не требуют вмешательства пользователя. Однако, иногда часы начинают отставать или наоборот спешить. Вы можете, конечно, регулярно синхронизировать их с временем в Интернете, но лучше сразу выяснить причину сбоев, поскольку они могут сигнализировать даже о скором выходе Вашего ПК из строя!
В статье ниже мы рассмотрим способы настройки системных часов на компьютере, расскажем о том, как исправить постоянные отставания и какие программы можно использовать для того, чтобы улучшить часы.
Почему отстаёт или спешит время в Windows
Среди прочих нюансов настройки компьютера важно знать и уметь настраивать системные часы в трее. Особенно, если они вдруг начали отставать или спешить.
На написание статей меня очень часто наталкивают различные случаи из реальной жизни, которые связаны с компьютерами. Сегодняшняя статья – не исключение. И поводом для неё стало сразу несколько событий! Во-первых, мне захотелось на своём рабочем компьютере с Windows XP, чтобы рядом со временем и датой в трее отображался день недели. Во-вторых же, на одном из компов стали довольно сильно спешить системные часы.
Всё это и натолкнуло на мысль о том, что неплохо бы сделать статью полностью посвящённую часам на компьютере.
Как работают часы на компьютере
Ещё с самого появления компьютеров возникла необходимость использования в них часов. Для этих целей внедряли различные технологии пока в 1984 году компания IBM не применила стандартизированное решение, которое получило название часы реального времени (англ. real-time clock – сокр. RTC). Это была отдельная микросхема (изначально фирмы Dallas), которая содержала в себе кварцевый резонатор, работающий от собственной встроенной батарейки (позже аккумулятора) на частоте 32768 Гц (как в современных кварцевых часах):
Материнские платы с микросхемами RTC существовали вплоть до 2000-х годов, а затем были вытеснены более современными решениями, в которых часы были интегрированы в южный мост с питанием от батарейки BIOS. По такому принципу и сегодня работает большинство компьютеров, и именно поэтому, даже если ПК отключён, время сохраняется и продолжает идти.
Начальной точкой отсчёта для часов на компьютере является дата изготовления микросхемы южного моста. Именно до этой даты системное время может сбрасываться при различных сбоях. Но иногда оно может начать постепенно отставать или наоборот ускоряться. Давайте разберёмся из-за чего это происходит.
Почему часы на компьютере отстают или спешат
Для часов на компьютере есть допустимые нормы отклонения. Например, если за месяц набегает расхождение со временем в Интернете в плюс-минус пару минут, то это ещё не считается неполадкой. Если же подобная или большая разница набирается, к примеру, за сутки (или даже быстрее), то на такую ситуацию уже нужно обратить внимание.
Чаще всего причина как отставания, так и спешки часов компьютера, кроется в разряжающейся батарейке-таблетке BIOS (тип CR2032 номиналом 3 Вольта). Чем меньший ток она выдаёт, тем быстрее начинает резонировать кварц встроенного таймера и время начинает спешить. С продолжением разряда (ниже 2 Вольт) тока для таймера становится недостаточно и частота работы кварца падает. Соответственно, на этом этапе время начинает отставать.
Если батарейку не заменить и после этого, то при каждом последующем запуске компьютера время вовсе будет сбрасываться до 00:00 даты производства микросхемы южного моста. Кстати, кроме времени будут сбрасываться и все настройки BIOS, что может привести к тому, что компьютер вовсе не будет нормально загружаться, требуя всякий раз задать нужные настройки!
Однако, иногда даже после замены батарейки проблема остаётся. И причины неправильного отсчёта времени в этом случае могут быть гораздо более серьёзными! Если подобная ошибка наблюдается на новом компьютере, то, вполне вероятно, что микросхема южного моста его материнской платы имеет заводской брак. В этом случае лучше всего заменить всю плату по гарантии.
Самым печальным же случаем, когда уже вряд ли чем-то поможешь, может быть наблюдение подобной проблемы на уже давно используемом компьютере. Если после замены батарейки часы так и продолжают работать неправильно, можно констатировать скорую «кончину» южного моста, что аналогично покупке новой материнской платы. В этом случае наилучшим советом будет начать откладывать средства на покупку новой «мамки», замена которой грядёт в ближайшие месяцы.
Кстати, есть способ проверить, правда ли причина сбоя в «подгулявшем» южном мосте. В некоторых BIOS имеется раздел, в котором отображаются показания датчиков температуры различных компонентов чипсета. Ищите, прежде всего показатели SB (South Bridge – южный мост) и NB (North Bridge – северный мост). Если температура южного моста примерно равна или даже выше, чем у северного, проблема однозначно в нём:
Критической температурой в большинстве случаев является 90 градусов по Цельсию. Если эта температура у Вас ниже (как на скриншоте выше), то можно попытаться, хотя бы временно, спасти Ваш южный мост. Для этого нужно позаботиться о его охлаждении. На некоторых материнских платах в районе южного моста предусмотрены специальные выемки или петли для крепления радиатора либо даже кулера:
Если же крепёжных приспособлений для охлаждающих элементов не наблюдается, можно купить любой небольшой радиатор и приклеить его прямо к микросхеме на специальный теплопроводящий клей (например, отечественный АлСил-5 или китайский Heatsink Plaster):
Если Вам удалось снизить температуру южного моста или устранить сбой системных часов заменой батарейки BIOS, самое время приступить к настройке времени и даты в операционной системе.
Настройка времени и даты
В различных версиях Windows (за исключением XP и более ранних) внешний вид окна настроек системных часов практически одинаков и вызывается оно либо из контекстного меню часов пунктом «Настройка даты и времени», либо из Панели управления разделом «Дата и время»:
Окно настроек содержит три вкладки. На первой, которая открывается по умолчанию, мы, собственно, и можем задать дату и время. Правда, чтобы сделать это, нужно обладать правами Администратора, поскольку изменение данных настроек контролируется системой UAC. Нажмите на кнопку «Изменить дату и время», подтвердите свои права и в открывшемся окне при помощи календарика укажите текущий день, а в окошко сбоку введите точное время. Кстати, обратите внимание на кнопку «Изменение параметров календаря»! Мы к ней ещё вернёмся:
На первой вкладке также есть кнопка «Изменить часовой пояс». Следите, чтобы он был указан правильно, поскольку данный параметр отвечает за корректную синхронизацию со временем в Интернете и перевод часов на зимнее/летнее время.
Вторая вкладка носит название «Дополнительные часы». Здесь мы можем активировать отображение до двух дополнительных часов, которые находятся в разных часовых поясах мира. Просто активируйте опцию и выберите часовой пояс. Дополнительные часы будут отображаться в небольшом всплывающем окошке при наведении на основные:
Третья вкладка – «Время по Интернету». С помощью этой вкладки Вы можете синхронизировать часы компьютера с серверами точного времени в Сети. По умолчанию в новых Windows синхронизация происходит еженедельно автоматически, но при желании, можно сделать это и вручную. Для этого нужно нажать кнопку «Изменить параметры» (требуется подтверждение UAC), в открывшемся окне в выпадающем списке выбрать сервер синхронизации и нажать кнопку «Обновить сейчас»:
Здесь стоит упомянуть о том, что не все NTP-сервера (NTP – «Network Time Protocol») могут работать корректно и в списке их может быть немного (от 2 до 5). Для более быстрой и точной синхронизации иногда имеет смысл добавить вместо предложенных свои сервера, которые находятся в Вашей стране. Например:
Добавить их для разовой синхронизации можно прямой вставкой в окошко выпадающего списка, однако, при такой вставке сервер не всегда сохраняется после перезагрузки компьютера. Для перманентного сохранения придётся прибегнуть к правке реестра. Для этого запустите Редактор реестра (WIN+R – regedit – Enter), перейдите в ветку HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers и отредактируйте или добавьте нужные адреса серверов:
Кроме того, в реестре же Вы можете изменить частоту синхронизации часов. Для этого перейдите в раздел HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient и найдите в нём параметр SpecialPollInterval. Он содержит время в секундах между обновлениями. По умолчанию здесь стоит значение 604800 секунд, что соответствует ровно 7 дням. Можете установить ежедневное обновление (86400 сек.), открыв редактор параметра, переведя систему счисления в десятичную и введя нужное число.
А напоследок вернёмся к уже упомянутой функции «Изменение параметров календаря», которую можно найти в окне настройки времени. Манипулируя данными параметрами, мы можем изменить отображение времени и даты на системных часах. Правда, из времени можно настроить только 12-часовый или 24-часовый формат, а вот датой интереснее:
На часах в трее по умолчанию выводится текущая дата в виде «день:месяц:год». Формат вывода соответствует формату «Краткая дата», который можно править согласно подсказкам внизу. Добавив в конец формулы, например, «ddd», Вы сможете добиться отображения краткого названия текущего дня недели. А можете и вовсе поэкспериментировать, сочетая дату с любыми надписями, которые нужно брать в одинарные кавычки:
К сожалению, подобные махинации ограничены в длине. Если её превысить, то вторая строчка часов в трее с отображением даты просто исчезнет. Также, данные манипуляции, увы, не работают в Windows XP, поэтому, сколь я ни бился, но на работе заставить часы показывать то, что мне нужно штатными средствами не удалось. Но добиться практически всего можно, используя специальные программы.
Программы для работы с системными часами
Все программы для работы с часами в Windows можно условно разделить на две группы: те, которые направлены на настройку внешнего вида и те, которые нужны для синхронизации времени. Начнём с последних. Их существует довольно много (можете поискать по запросу «программы для синхронизации часов»), но смысл всех сводится к тому, чтобы без правки реестра можно было синхронизировать время со сторонними NTP-серверами.
Общим минусом практически всех программ-синхронизаторов времени является их англоязычность (по крайней мере мне не удалось найти толковых русскоязычных приложений подобного рода). В качестве же хорошего примера такого софта рекомендую разработку нашего бывшего соотечественника Дениса Бабкина под названием tSync:
Программа не требует установки, весит менее мегабайта и содержит в себе всё необходимое для удобной настройки всех нюансов синхронизации часов. По умолчанию она загружается вместе с системой и синхронизирует время раз в сутки. Если нажать кнопку «Time Servers», откроется список NTP-серверов, в который Вы сможете добавить и свои без необходимости править реестр. Вручную для синхронизации можно выбирать любой из доступных серверов, однако по умолчанию время синхронизируется всегда с тем, который стоит первым в списке.
Кстати, программа будет полезна и для системных администраторов, поскольку имеет модуль удалённой синхронизации времени. Чтобы обновить часы на компьютерах по локальной сети, на каждый из них нужно скопировать из архива файл tSyncRemote.exe и поместить его в автозагрузку. Теперь, если активировать галочку «Enable TCP/IP time sync» в основном окне программы, Вы сможете увидеть список доступных удалённых машин, на которых можно быстро обновить время.
Ну а теперь, что касается программ для изменения внешнего вида часов в трее. Их тоже существует весьма много, причём, как платных, так и бесплатных. Но все их можно разделить на две подгруппы. К первой отнесём программы, направленные на всевозможные украшательства, а ко второй – на расширение функционала.
Ярким представителем программ первой категории можно назвать имеющуюся у нас на сайте утилиту LClock:
С помощью данной программы Вы можете менять стиль, цвет и шрифт часов в трее, делая их более оригинальными. Кроме того, LClock имеет встроенный улучшенный календарь с поддержкой напоминаний. Единственный минус – программа не работает на Windows 8 и старше. Для новых систем единственным полнофункциональным аналогом можно назвать Atomic Alarm Clock, но эта программа, увы, платная. Единственным частично работающим аналогом подобного рода оказалась старенькая портативная программка Tray_Clock, но она не заменяет, а только перекрывает стандартные часы.
Я же, если помните, изначально искал программу, которая бы смогла вывести мне день недели на часах в трее Windows XP. Это уже как раз другой тип программ, который направлен на улучшение функционала (хотя некоторые функции кастомизации часов там тоже есть). И такой программой стала AlfaClock Free (скачать можно в архиве с материалами к статье по ссылке внизу):
Данная программа позволяет отрегулировать вручную ширину области панели задач, отведённую под часы, и вывести на самих часах информацию о времени и дате практически в любом нужном Вам формате! К сожалению, как и рассмотренная выше программа LClock, AlfaClock Free работает только на компьютерах с Windows 7 максимум.
Выводы
Как видим, часы на компьютере при всей их кажущейся простоте – вещь довольно интересная. К сожалению, начиная с Windows 8, Microsoft существенно урезала возможности изменения внешнего вида часов на панели задач при помощи сторонних программ. Но, зато дала возможность более гибко настраивать формат их вывода путём штатных настроек. А в Windows 10, например, добавив в реестр параметр ShowSecondsInSystemClock (DWORD (32 бита)) со значением «1» в ветке HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, Вы сможете отобразить на часах в трее секунды!
Словом, настраивать есть что, было бы желание. Ну и в качестве заключения, хотел бы выразить небольшую просьбу. Если, вдруг, Вам где-то попадутся хорошие бесплатные программы для улучшения вида часов в новых версиях Windows, было бы очень здорово, если бы Вы написали о них в комментариях. Буду очень признателен!