2015-02-25 1 views
1

Правильно, в основном у меня есть таймер обратного отсчета, который не делает точно, что он говорит на жестяной банке.Обратный отсчет продолжает меняться

PHP выводится корректно, но после того, как он отображается в Javascript, дата постоянно изменяется.

Я загружу страницу, и она покажет один ETA, и я обновлюся, и он может прыгать вперед на час или прыгать назад несколько часов?

Я просто нужен таймер обратного отсчета до 20 марта 2015 года

РНР код

<?php 
    $futureDate = '2015-03-20'; 
    $d = new DateTime($futureDate); 
?> 

Javascript

$('#counter').countdown({ 

     timestamp : (new Date()).getTime() + <?php echo $d->diff(new DateTime())->format('%a*%h*%i*%s*1000'); ?> 
}); 

Вот Live Preview

Preview

Пожалуйста, кто-нибудь помочь лол

+0

использовать 'getDays' вместо' getTime() ', так как вы конвертируете в дни в микросекундах. – Mouser

+0

Не будет ли это 'futureDate - presentDate'? Или просто 'futureDate', не добавляя ничего, в зависимости от того, что вы с ним делаете? – blex

+1

В чем смысл всей этой математики? 'timestamp: (новая дата()). getTime() + 22 * ​​2 * 10 * 55 * 1000' – Marc

ответ

0

вы можете использовать что-то вроде этого в JavaScript

how to countdown to a date

var end = new Date('03/20/2015 0:0 AM'); 

var _second = 1000; 
var _minute = _second * 60; 
var _hour = _minute * 60; 
var _day = _hour * 24; 
var timer; 

function showRemaining() { 
    var now = new Date(); 
    var distance = end - now; 
    if (distance < 0) { 

     clearInterval(timer); 
     document.getElementById('counter').innerHTML = 'EXPIRED!'; 

     return; 
    } 
    var days = Math.floor(distance/_day); 
    var hours = Math.floor((distance % _day)/_hour); 
    var minutes = Math.floor((distance % _hour)/_minute); 
    var seconds = Math.floor((distance % _minute)/_second); 

    document.getElementById('counter').innerHTML = days + 'days '; 
    document.getElementById('counter').innerHTML += hours + 'hrs '; 
    document.getElementById('counter').innerHTML += minutes + 'mins '; 
    document.getElementById('counter').innerHTML += seconds + 'secs'; 
} 

timer = setInterval(showRemaining, 1000); 
0

Замените JavaScript с

$('#counter').countdown({ 
     timestamp : new Date('2015/03/20') 
}); 

Как теперь вы усложнять вещи - вам просто нужно установить дату обратного отсчета, когда вы хотите, чтобы она закончилась.