Шкалу времени 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>