Шкалу времени UTC ввели взамен шкалы GMT ещё в 1972 году.
Для всех гражданских нужд сейчас используется именно шкала UTC, и часовые пояса обозначаются сдвигом относительно UTC: UTC+3, UTC+4. Шкала GMT уже никем не поддерживается. Все источники времени (хоть NTP-серверы в инете, хоть GPS-спутники, хоть наземные станции точного времени) сейчас поставляют время только в UTC. Использовать GMT вместо UTC уже давно неверно (ладно ещё в 70-х и 80-х годах прошлого века это делали по старой привычке, но в 21-м веке это уж совсем недопустимо). Тот факт, что в настройках времени Windows часовые пояса обозначены по непонятным причинам через GMT, — это фэйл их разработчиков и нарушение международных стандартов. Они почему-то тупили и исправили эту ситуацию только в Win7 и Win2008-R2 (там уже время обозначено через UTC).
Сделаем вывод текущего времени в браузере средствами js. Вывод времени должнен быть в real time. Если в операционной системе время настроено не верно, то и в браузере будет выводиться не верное время. Также будет указано смещение относительно времени сервера. Время сервера предварительно получаем с помощью php-функции date()
.
Итак, создадим div, в котором будем выводить часы:
<div id="timeLocation"></div>
И добавим javascript-код:
<script type="text/javascript"> var locale_time_start = new Date(); /*get locale time*/ var server_time = new Date('<?php echo date('d F Y H:i:s');?>'); /*get server time*/ var specification_time = getTimeDifference(locale_time_start, server_time); function showTime() { var server_time_zone = '<?php echo date('\U\T\C P');?>'; /*time offset*/ var locale_time = new Date(); /*get locale time*/ locale_time.setHours(locale_time.getHours()-specification_time[0]); var dH=''+locale_time.getHours();dH=dH.length<2?'0'+dH:dH; locale_time.setMinutes(locale_time.getMinutes()-specification_time[1]); var dM=''+locale_time.getMinutes();dM=dM.length<2?'0'+dM:dM; locale_time.setSeconds(locale_time.getSeconds()-specification_time[2]); var dS=''+locale_time.getSeconds();dS=dS.length<2?'0'+dS:dS; var tmp=dH+':'+dM+':'+dS+' '+server_time_zone; document.getElementById('timeLocation').innerHTML=tmp; var t=setTimeout('showTime()',1000); /*рекурсивный вызов каждую сек. для корректировки времени*/ } function getTimeDifference(time_1, time_2) { var hovers_difference = time_1.getHours() - time_2.getHours(); var minutes_difference = time_1.getMinutes() - time_2.getMinutes(); var seconds_difference = time_1.getSeconds() - time_2.getSeconds(); var time_difference = [hovers_difference, minutes_difference, seconds_difference]; return time_difference; } showTime(); /*выполняем ф-ю вывода времени*/ </script>
Комментарии 0