Таймер отсчета по UTC
Здравствуйте. Сразу хочу просить прощения за "быдлокод", но я новичок в jQ. Есть таймер, который отсчитывает время до конца акции. На php показывает время правильно, в формате UTC. Есть код:
function timer() { $('#sidebarblock .special-box').each(function () { var $this = $(this); var timer = $this.find('.timer'); var timestamp = timer.data('time-left-timestamp'); var time = new Date().getTime() / 1000; var server_time = timer.data('server-curent-timestamp'); var seconds = '00'; var minutes = '00'; var hours = '00'; var days = '00'; // Вычисляем разницу времени между временем сервера и текущим по локали пользователя var d = server_time - time; // Вычисляем разницу времени между оставшимся временем и предыдущим полученным результатом var q = timestamp - d; if (q > 0) { // Здесь мы получаем количество секунд, которое будет равно разнице в оставшееся время, // вне зависимости от расположение пользователя seconds = q-time; seconds = Math.floor(seconds); var utc = new Date(seconds*1000); seconds = utc.getUTCSeconds(); minutes = utc.getUTCMinutes(); hours = utc.getUTCHours(); days = utc.getUTCDay(); if (seconds < 10) { seconds = '0' + seconds; } if (minutes < 10) { minutes = '0' + minutes; } if (hours < 10) { hours = '0' + hours; } } // timer.find('.hours').html(hours).fadeIn(100); // timer.find('.mins').html(minutes).fadeIn(100); // timer.find('.secs').html(seconds).fadeIn(100); console.log('секунды-'+seconds); console.log('минуты-'+minutes); console.log('часы-'+hours); console.log('дни-'+days); }); } Он вызывается каждую секунду и применяется для 2 блоков. В первом блоке разница между php и js (код сверху) составляет 4 часа, но во втором блоке время показывается правильно (time_php === time_js). В чем загвоздка? Почему показывает только в одном блоке разницу, хотя в другом все нормально? Спасибо за ответы. |
Часовой пояс GMT +3, время: 01:18. |