all in all front-end back-end linux web-services

Точное время на сайте, umi-cms

Если вдруг требуется разместить точное время на сайте, то для меня логичным видится такой способ. Для начала нужно синхронизировать время на сервере, на котором располагается сайт, а потом уже передавать текущее значение времени сервера при запросе страницы. Затем сравнить с временем на клиентской машине, т.е. у пользователя на компьютере, а именно найти разность и каждую секунду в текстовое поле помещать скорректированное время. Ниже js-код,встраиваемый в шаблон сайта, с вызовом макроса для получения серверного времени.

  1. TimeServer = <xsl:value-of select="document('udata://custom/getTime/')/udata" disable-output-escaping="yes" />; //вызывается кастомный макрос для xslt-шаблонизатора. Для tpl вызов такой %custom getTime()%.
  2. TimeClient = (new Date()).getTime();
  3. var Y;
  4. Y = new Date;
  5. var timezone = 5; //часовой пояс сайта
  6. TimeDelta = TimeServer - TimeClient + timezone*3600000 + Y.getTimezoneOffset();
  7. onload=function(){
  8.     setInterval("clock1()",10000);
  9. }
  10. function clock1() {
  11.     var X;
  12.     X = new Date;
  13.     X = new Date(X.getTime() + TimeDelta);
  14.     document.getElementById('time').innerHTML=((h=X.getHours())<10?'0':'')+h+':'+((m=X.getMinutes())<10?'0':'')+m;
  15. }

Макрос для получения серверного времени:

  1. public function getTime() {
  2.     return time()*1000; //умножаем на 1000, так как в javascript формат времени в миллисекундах.
  3. }
17.02.2016

Комментарии

Бэкенд-разработка

«Невидимая магия»