blackdarthvader
@blackdarthvader
Только учусь кодить ^_^

Как сделать таймер обратного отсчета?

Здравствуйте, проблема в следующем

Есть дата в формате 2016-02-29 21:53

Перевожу её в секунды вот так
<? echo strtotime($date->format('Y-m-d G:i'));?>

Получается 1456771980 секунд, проверяю тут www.cy-pr.com/tools/time, перевел в секунды правильно, идем дальше, делаю таймер обратного отсчета

<div>
<span>Осталось:&nbsp;</span><span class="afss_day_bv">0</span> д.
<span class="afss_hours_bv">00</span>&nbsp;час.&nbsp;
<span class="afss_mins_bv">00</span>&nbsp;мин.&nbsp;
<span class="afss_secs_bv">00&nbsp;</span>&nbsp;сек.
</div>


<script type="text/javascript">//<![CDATA[
var remain_bv   = <? echo strtotime($date->format('Y-m-d G:i'));?>;
function parseTime_bv(timestamp){
    if (timestamp < 0) timestamp = 0;
 
    var day = Math.floor( (timestamp/60/60) / 24);
    var hour = Math.floor(timestamp/60/60);
    var mins = Math.floor((timestamp - hour*60*60)/60);
    var secs = Math.floor(timestamp - hour*60*60 - mins*60); 
    var left_hour = Math.floor( (timestamp - day*24*60*60) / 60 / 60 );
 
    $('span.afss_day_bv').text(day);
    $('span.afss_hours_bv').text(left_hour);
 
    if(String(mins).length > 1)
        $('span.afss_mins_bv').text(mins);
    else
        $('span.afss_mins_bv').text("0" + mins);
    if(String(secs).length > 1)
        $('span.afss_secs_bv').text(secs);
    else
        $('span.afss_secs_bv').text("0" + secs);
     
}
 
$(document).ready(function(){
    setInterval(function(){
        remain_bv = remain_bv - 1;
        parseTime_bv(remain_bv);
        if(remain_bv <= 0){
            alert('Hello');
        }
    }, 1000);
});
//]]>
</script>


И получается такая вот штука интересная Осталось: 16860 д. 18 час. 50 мин. 16 сек.

Почему-то скрипт не верно отсчитывает, в чем может быть проблема? Дней должно быть 80, но выводится 16860
  • Вопрос задан
  • 574 просмотра
Пригласить эксперта
Ответы на вопрос 2
Вам наверное стоит вычесть из вашей даты текущую?
Ответ написан
@ssrdop
Из ожидаемой даты и времени надо вычесть текущую дату и время. Т.е если мы ждем 12 января 13:00, а сейчас 10 января 10:00, то получаем: 12-10 = 2 дня, 13:00 - 10:00 = 3 часа и получаем всего остается 2 дня и 3 часа.
А что насчет программного кода, просто используйте стандартную функцию возвращающую текущее время и из ожидаемой даты и времени вычитайте текущую дату и время.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы