Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Таймер отсчета по UTC (https://javascript.ru/forum/jquery/42359-tajjmer-otscheta-po-utc.html)

Godod 23.10.2013 13:47

Таймер отсчета по 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.