Цифровые часы на CSS3 и jQuery. Как синхронизировать свои наручные часы с атомными: условия — домашние Точное время в твоем мобильном
Часы Windows, расположены в правом нижнем углу экрана на панели задач рядом с кнопкой « », языковой панелью, другими элементами и открываются по нажатию на них левой кнопки. Чтобы системные часы показывали точно, необходимо .
Синхронизация происходит с интернет-сервером и время вашего ПК автоматически обновляется. По умолчанию обновление происходит каждые 7 дней с наличием подключенного интернета. В статье рассмотрим, как включить синхронизацию, как ускорить обновление времени с сервером, и какую программу можно использовать.
Как включить, настроить синхронизацию времени на Windows 7, 8Примечание: по умолчанию синхронизация времени через интернет включена в Windows.
Для начала Вам потребуется и выбрать в области просмотра мелкие или крупные значки. Далее в списке нажмите «дата и время».
В результате откроются опции даты и времени. Еще их можно вызвать, нажав левой кнопкой в область отображения даты и времени, и выбрать соответствующую ссылку (показана на скриншоте).
В окошке перейдите в раздел «время по интернету», здесь представлена информация о текущей синхронизации с наименованием сервера (если она включена). По умолчанию синхронизация по интернету производится с сервером от Microsoft, который называется time.windows.com. Для изменения настроек кликните «изменить параметры» и «да» (если включен контроль учетных записей).
В параметрах времени по интернету должна быть отмечена флажком опция «синхронизировать с сервером времени ». Выберите один из предустановленных серверов или задайте свой (со списком серверов можно ознакомиться здесь http://support.microsoft.com/ru-ru/kb/262680). Далее нажмите «обновить сейчас», чтобы синхронизировать время на компьютере с интернетом. В случае успешной синхронизации, Вы увидите уведомление в этом же окне.
Для синхронизации времени через интернет Вы можете использовать различные утилиты такие как:
Через программы настраиваются все аспекты синхронизации, уменьшается интервал запроса на обновление. Стандартными методами так же можно синхронизировать время на компьютере с интернетом ускоренно и чаще, читаем дальше, как это сделать.
Как уменьшить интервал обновления времени с интернетаБывает ситуация, что время постоянно сбивается из-за проблем с системными часами, даже если у Вас включена синхронизация времени на компьютере. Решением проблемы является правка NTP клиента для ускорения периода обновления. В зависимости от версии ОС Вам потребуется:
В реестре перейдите до раздела NtpClient (полный путь показан на картинке ниже). В правой стороне редактора дважды щелкните по параметру SpecialPollInterval. Далее в области системы счисления выберите «десятичная», и в поле значения будет число 604800, которое представляет собой 7 суток в секундах.
Например, если вы хотите синхронизировать время на компьютере с интернетом каждый день, тогда введите значение 86400, которое рассчитывалось по формуле 60 секунд * 60 минут * 24 часа * 1 день. Задайте свое количество секунд и нажмите OK.
Примечание: не ставьте значение меньше 14400 секунд (4 часа), иначе IP-адрес вашего компьютера может получить запрет от сервера времени.
Вы также можете ускорить синхронизацию вручную, но добраться до кнопки «обновить сейчас» составляет много шагов. В данном случае можно воспользоваться cmd. Для этого надо , 8 от имени администратора, а затем ввести команду ниже и нажать клавишу ввода.
Примечание: команда заработает, если синхронизация времени через интернет включена.
Чтобы еще ускорить процесс и скопируйте в него команду синхронизации. Далее вынесите файл на рабочий стол или закрепите на панели задач и запускайте от имени администратора.
Предотвращение проблем во время синхронизацииУстановить точное время через синхронизацию с интернетом не всегда удается. Вы можете столкнуться со следующими проблемами и путями их решения:
Как видите, синхронизировать время на компьютере с интернетом в Windows 7, 8 для точного отображения не сложно. Все можно сделать стандартными шагами Виндовс. Программы лишь уменьшат затраты Вашего времени, например, сократят время синхронизации в два клика.
Напомним, что под системой отсчета подразумевается тело отсчета, с которым связаны система координат и ряд неподвижных одинаковых часов, синхронизированных между собой. Часами будем считать любой прибор, в котором используется тот или иной периодический процесс.
При проведении различных физических измерений широко пользуются понятием одновременности двух или нескольких событий. Например, для определения длины стержня, расположенного вдоль осиX системы отсчета К и движущегося относительно этой системы (рис. 7.1), необходимо одновременно, то есть в один и тот же момент времени , зафиксировать значения координатиконцов стержня:
. (7.1)
Для этого в каждой системе отсчета должно быть множество часов, находящихся в различных точках пространства. Все эти часы должны идти согласованно, синхронно - их показания в каждый момент времени должны быть одинаковыми.
Синхронизировать часы, помещенные в различные точки системы отсчета, можно только с помощью каких-либо сигналов. Наиболее быстрые сигналы, пригодные для этой цели, - это световые или радиосигналы, которые распространяются с известной скоростью С. Выбор световых сигналов обусловлен еще и тем, что их скорость не зависит от направления в пространстве, а также одинакова во всех инерциальных системах отсчета.
Синхронизацию
часов можно произвести следующим
образом. Допустим что, из начала системы
координат точки 0
по радио в момент времени
передается радиосигнал. В момент, когда
этот сигнал достигнет часов, находящихся
от точки0
на известном расстоянии S
,
их устанавливают так, чтобы они показывали
время
,
то есть с учетом времени распространения
сигнала. В результате такой операции
все часы данной системы отсчета будут
синхронизированы в каждый момент
времени.
Тот факт, что второй постулат специальной теории относительности несовместим с классическим законом сложения скоростей, а следовательно, и с преобразованиями Галилея, приводит к необходимости отказаться от этих преобразований. Возникает задача нахождения истинных формул преобразований при переходе от одной инерциальной системы отсчета к другой, то есть формул, связывающих координаты и время одного и того же события в двух инерциальных системах отсчета.
Новые преобразования были выведены Эйнштейном на основе сформулированных им постулатов. Формально они совпали с преобразованиями, найденными ранее Лоренцем в связи с попытками объяснить неудачу опыта Майкельсона. Но только Эйнштейн вскрыл их глубокий смысл.
Рассмотрим
две инерциальный системы отсчета К
и К"
(рис. 5.1). Как и прежде, система К"
К
в направлении оси X
с постоянной скоростью
.
Установим в разных точках обеих систем
отсчета одинаковые часы и синхронизируем
их: отдельно часы системыК
и отдельно часы системы К"
.
За начало отсчета времени возьмем в
обеих системах момент (
),
когда начала координат (точки0
и 0"
)
совпадают.
Так
как система К"
движется относительно системы К
равномерно, связь между координатами
и
должна по-прежнему, как и в преобразованиях
Галилея, линейно зависеть от времени,
то есть
, (8.1)
где - некоторый коэффициент.
Аналогичное выражение можно записать для обратного перехода от системы К к системе К" :
. (8.2)
Для
определения коэффициента
предположим, что в начальный момент
времени (
),
когда точки0
и 0"
совпадали,
из точки 0
в направлении оси X
был послан световой сигнал, который
через время
,
измеренное в системеК
,
достиг точки А
с координатой
.
В системеК"
эта точка имела координату
,
где-
время, измеренное в системеК"
.
Заметим, что скорость С
в силу второго постулата одна и та же.
Подставив координаты ив выражения (8.1) и (8.2), получим
,
.
Перемножив
правые и левые части этих равенств и
произведя сокращение на
,
получим
,
(8.4)
Таким
образом, связь между координатами
иимеет вид:
(8.5)
Для нахождения связи между ипроделаем следующее. Исключив из выражений (8.1) и (8.2) величинуи решив их после этого относительно, получим с учетом выражения (8.4):
(8.6)
Координаты
и
ипри рассматриваемом движении системК
и К"
остаются
равными друг другу.
Таким образом, преобразования для координат и времени, получившие название преобразований Лоренца , имеют вид:
,
,
,
,
(8.7)
где
Обратные преобразования в силу равноправности всех инерциальных систем отсчета должны иметь аналогичный вид, но с учетом изменения знака скорости V :
,
,
,
. (8.8)
Анализ формул преобразований Лоренца позволяет сделать ряд важных выводов.
Во-первых
,
особенностью преобразований Лоренца
является то, что при
они переходят в преобразования Галилея
(5.1). Это означает, что теория относительности
не отвергает преобразования Галилея,
а включает их в истинные преобразования
как частный случай, справедливый при
.
Во-вторых
,
из преобразований Лоренца следует, что
при
подкоренные выражения становятся
отрицательными и формулы теряют
физический смысл. Это означает, что
движение тел со скоростью, большей
скорости света в вакууме, невозможно.
В-третьих , в формулы преобразования времени входит пространственная координата, что отражает неразрывную связь пространства и времени.
Когда изучаешь новую технологию или язык программирования, основные понятия всегда носят относительно рутинный характер и поэтому, на мой взгляд, быстро отбивают желание обучаться у начинающих. Цель данной статьи - это заинтересовать и увлечь читателя изучением программирования на примере разработки элементарной графики в динамическом режиме. Статья подойдет для начинающих разработчиков, которые ознакомились с основами HTML5 и JavaScript , и которым наскучило видеть статический текст на страничке при выводе в консоль браузера массивов, объектов, результатов арифметических операций и т.д. Далее мы реализуем простейшую, но полезную для понимания языка анимацию.Что мы будем делать? Рассмотрим процесс создание простейших аналоговых часов средствами HTML5 и JavaScript. Рисовать часы будем графическими примитивами, не используя средств CSS . Мы вспомним немного геометрии для отображения нашей графики, вспомним немного математики для реализации логики отображения наших анимированных часов. И в целом постараемся уменьшить энтропию в познаниях языка JavaScript. Для разработки нам понадобится текстовый редактор вроде Notepad++ или Sublime Text 3 .Реализация цифровых часов Создадим три файла в текстовом редакторе. (Все три файла должны лежать в одной папке).index.html
- основная страничка
clockscript.js
- скрипт с логикой работы
style.css
- файл стилей
Для начала выведем текущее время в обычный div -блок в.html файл. Даже в такой маленькой задаче есть свой подводный камень. Если просто закинуть функцию отображения часов в событие onload у тега body , то текущее время отобразится в строке, но так и останется статическим. И div -блок, в который мы отправили строку с текущим временем, не будет самостоятельно обновляться.
Добиться самостоятельного обновления элемента страницы можно оборачиванием функции отображения времени в анонимный метод, который присваивается свойству onload корневого объекта Window .
Один из вариантов реализации может быть следующим. Файл index.html :
Часы
Черновик по JavaScript. Работа с холстом:
Тут будет текущее время
Файл style.css
:
#clock{
font-family:Tahoma, sans-serif;
font-size:20px;
font-weight:bold;
color:#0000cc;
}
Файл clockscript.js
:
Window.onload = function(){
window.setInterval(function(){
var d = new Date();
document.getElementById("clock").innerHTML = d.toLocaleTimeString();
}
, 1000);
}
Разберемся с работой clockscript.js
:
Выполняем внутренний JavaScript-код при помощи привязки к событию onload корневого объекта Window :
Window.onload = function(){/*бла-бла-бла*/}
Метод объекта объекта Window
, который выполняет код через определенные промежутки времени (указанные в миллисекундах):
Window.setInterval(function(){/*Тут действия, обернутые в функцию, которую нужно выполнять каждые 1000 миллисекунд*/} , 1000);
Объект Date используется для проведения различных манипуляций с датой и временем. С помощью конструктора создаем его экземпляр и называем d
:
Var d = new Date();
Находим объект DOM по его id. Это именно тот объект, в который мы хотим выводить наше время. Это может быть параграф, заголовок или еще какой-то элемент. У меня это div
-блок. После получения элемента по id, используем его свойство innerHTML
для получение всего содержимого элемента вместе с разметкой внутри. И передаем туда результат метода toLocaleTimeString()
, который возвращает форматированное представление времени:
Document.getElementById("clock").innerHTML = d.toLocaleTimeString();
Вот, что должно получиться(время динамически изменяется каждую секунду):
Чтобы увидеть наш холст в файле index.html внутри body мы должны где-то расположить следующий тег, сразу определив его размеры:
Теперь в файле clockscript.js
, прежде чем пытаться рисовать, нужно получить контекст объекта Canvas
. Сделаем это в начале нашей функции отображения часов. Тогда файл clockscript.js
изменится следующим образом:
Function displayCanvas(){
var canvasHTML = document.getElementById("myCanvas");
var contextHTML = canvasHTML.getContext("2d");
contextHTML.strokeRect(0,0,canvasHTML.width, canvasHTML.height);
//Тут будет вся логика часов и код отображения через графические примитивы
return;
}
window.onload = function(){
window.setInterval(function(){
var d = new Date();
document.getElementById("clock").innerHTML = d.toLocaleTimeString();
displayCanvas();
}
, 1000);
}
Ну что, давайте вспоминать математику? Нам важно понять связь между делениями определенных стрелок и углом их поворота на будущем циферблате.
Угол поворота всех стрелок за 1 секунду:
- Секундная стрелка повернется на угол - (1/60)*360 o = 6 o
- Минутная стрелка повернется на угол - (1/60)*6 o = 0,1 o
- Часовая стрелка повернется на угол - (1/60)*0,1 o ≈ 0,0017 o
То есть даже за 1 секунду все стрелки должны повернуться, каждая на соответствующий угол. И если это не учесть, то первый подводный камень, который мы получим в отображении, будет некрасивая анимация. К примеру, когда время будет 19:30, то часовая стрелка будет ровно показывать на 19 часов, хотя в реальной жизни она должна уже быть наполовину приближена к 20 часам. Аналогично, приятнее будет выглядеть плавное передвижение минутной стрелки. Ну а секундная стрелка пусть перещелкивается дискретными движениями, как в большинстве реальных механических часов. Решение проблемы: прибавлять к углы поворота текущей стрелки угол поворота более быстрой стрелки, домноженный на коэффициент, обозначающий его долю от угла текущей стрелки.
Реализация:
Var t_sec = 6*d.getSeconds(); //Определяем угол для секунд
var t_min = 6*(d.getMinutes() + (1/60)*d.getSeconds()); //Определяем угол для минут
var t_hour = 30*(d.getHours() + (1/60)*d.getMinutes()); //Определяем угол для часов
Вторая проблема:
Угол вращающегося радиус-вектора(стрелки часов) отсчитывается от положительного направления в направлении против часовой стрелки. Если мы это не учтем в нашей логике, то направим часы назад в прошлое.
И еще, отсчет часов, минут и секунд у нас происходит от цифры 12, верхнего положения. Решение проблемы: в наших формулах мы должны учесть это в качестве сдвига +π/2 (90 o). А перед значением угла ставить знак "-", чтобы часы шли именно по часовой стрелке. И, конечно, учитывать, что передача угла в градусах в тригонометрические функции языков программирования осуществляется с умножением на коэффициент "π/180 o ".
Реализация на примере секундной стрелки:
ContextHTML.moveTo(xCenterClock, yCenterClock);
contextHTML.lineTo(xCenterClock + lengthSeconds*Math.cos(Math.PI/2 - t_sec*(Math.PI/180)),
yCenterClock - lengthSeconds*Math.sin(Math.PI/2 - t_sec*(Math.PI/180)));
Третья проблема:
В ходе разметки рисочек циферблата нужно как-то выделить рисочки напротив часов. Всего рисочек - 60 для секунд и минут. 12 - для часов. Эти 12 должны как-то выделяться на фоне всех остальных. Также симметричность оцифровки зависит от ширины цифр. Очевидно, что цифры 10, 11 и 12 шире, чем 1, 2, 3 и т.д. Про это нужно не забыть.
Решение проблемы и вариант оцифровки циферблата:
For(var th = 1; th /dev/null 2>&1 exit 0
и раз в сутки, благодаря команде ntpdate, будет произведена синхронизация времени. Во избежании недоразумений, не поленитесь перед внедрением сервера времения и синхронизации всего и вся через протокол NTP - выставите вручную правильное время на всех доступных вам серверах и рабочих станциях. Если ваше несинхронизированное время слишком отличается от правильного, то можно вначале огрести много не нужных проблем.
В-четвёртых, NTP никак не связан, в какой стране и какие часовые пояса используются и как происходит переход на летнее и зимнее время и делается ли в данной стране такой переход. Это обязанность лежит на операционной системе, которую вам нужно обновлять, если в стране происходят изменения в "часовых" делах. В системах Debian и Ubuntu за это отвечает пакет tzdata, который должен быть актуальным.
В-пятых, лучше не поднимать свой NTP сервер на высоконагруженной системе.