Сообщение от ixth
|
Не поверишь! timestamp парсится на раз:
(function () {
//var targetDate = Number($.cookie('timestamp')) * 1000;
var targetDate = 1406975960000;
setInterval(function () {
updateTimer();
}, 1000);
function updateTimer() {
var now = new Date();
var diff = new Date(targetDate - now);
updateTimerView(diff.getUTCHours(), diff.getUTCMinutes(), diff.getUTCSeconds());
}
function updateTimerView(hours, minutes, seconds) {
// Тут делаешь анимацию
console.log('%s:%s:%s', hours, minutes, seconds);
}
}());
|
Немного переделал (добавил) код:
var targetDate = 1407055666;
var now = Math.round(new Date().getTime());
var diff = targetDate - now;
function UpdateTime() {
function pad(num) {
return num > 9 ? num : '0'+num;
};
days = Math.floor( diff / (1000*60*60*24) ),
hours = Math.floor( diff / (1000*60*60) ),
mins = Math.floor( diff / (1000*60) ),
secs = Math.floor( diff / 1000 ),
hh = hours - days * 24,
mm = mins - hours * 60,
ss = secs - mins * 60;
displaytime = pad(hh) + ':' + pad(mm) + ':' + pad(ss);
document.getElementById("countdown_time").innerHTML = displaytime;
diff -= 1000;
}
setInterval(UpdateTime, 1000);
document.write(targetDate+' - '+now+' = '+diff); //debug вывод какие значения попадают
Но проблема в том, что постоянно таймер стартует не с
23:59:59, а с
22:02:12.
Проблему я нашел в строчке debug.
Оказалась разность
даты + 1 день и
текущей даты равно
отрицательному значению.
Функция добавления в cookie даты + 1 день такая:
strtotime("+1 day")
Но вот как исправить ошибку я что-то не пойму.
P.S. Только не говорите что в переменной
var now = Math.round(new Date().getTime());
я не поставил деление на 1000. Если я его ставлю таймер стартует вообще с одной минуты.