Нужна помощь - таймер обратного отчета часов с указанием дат начала и конца

Тема в разделе "JavaScript", создана пользователем KPACHODAP, 15 окт 2013.

Модераторы: ZiX
  1. KPACHODAP

    KPACHODAP DELETED

    Регистр.:
    21 дек 2009
    Сообщения:
    641
    Симпатии:
    111
    Добрый день друзья, помогите что знает как сделать простой скрипт с обратным отчетом времени причем чтобы отчет был в часах. минутах и секундах с указанием дат начала и дат конца то есть:

    К примеру чтобы я указал дату и время начала и конца в каком нить формате более менее
    Дата начала: 2013-10-15,00:00:00
    Дата конца: 2013-12-15,00:00:00


    До конца акции осталось: 1464 часов, 00 минут, 00 секунд

    После завершения написало акция закончилась


    Чтобы время шло на убыль, то есть двигалось в реальном времени, все что находил в интеренете есть только отчет дней часов недель, секунд, а вот именно чтобы часы складывались нету! А также указания даты старта. Во общем прощу помощи надо на JS именно!
     
  2. Doctor_Chaos

    Doctor_Chaos Проктолог-гинеколог

    Moderator
    • Супермодератор
    Регистр.:
    7 сен 2013
    Сообщения:
    950
    Симпатии:
    645
  3. ReBeL

    ReBeL Злобный старикашка

    Регистр.:
    3 май 2006
    Сообщения:
    1.564
    Симпатии:
    851
    Код:
    <script type="text/javascript">
    var strTargetDate = "12/25/3012 12:00 AM";
    var strFormat = "$HOURS$";
    var strExpired = "Акция закончена";
    
    function doCountDown(seconds)
    {
      if (seconds < 0)
      {
          document.getElementById("countdown").innerHTML = strExpired;
          return;
      }
      var strMsg = strFormat;
      strMsg = strMsg.replace("$DAYS$",    ((Math.floor(seconds/86400))%100000).toString());
      strMsg = strMsg.replace("$HOURS$",  ((Math.floor(seconds/3600))%24).toString());
      strMsg = strMsg.replace("$MINUTES$", ((Math.floor(seconds/60))%60).toString());
      strMsg = strMsg.replace("$SECONDS$",  ((Math.floor(seconds))%60).toString());
    
      document.getElementById("countdown").innerHTML = strMsg;
    
      setTimeout("doCountDown(" + (seconds-1).toString() + ")", 1000);
    }
    function initCountDown()
    {
      var dtTarget = new Date(strTargetDate);
      var dtNow = new Date();
      var dtDiff = new Date(dtTarget-dtNow);
      var totalSeconds = Math.floor(dtDiff.valueOf()/1000);
    
      doCountDown(totalSeconds);
    }
    initCountDown();
    </script>
    
    Ну и чуть допилить =)
     
    KPACHODAP нравится это.
  4. KPACHODAP

    KPACHODAP DELETED

    Регистр.:
    21 дек 2009
    Сообщения:
    641
    Симпатии:
    111
    Доктор там я все пересмотрел подобного примера не нашел вообще! я слаб в JS! и такого примера не было там!

    Ребел, это только часы, так вот он не подходит он не правильно работает! вернее мне нужено чтобы по моему примеру можно было задать время начала время конца - тоесть даты и время а таймер шел в обратном направлении отчитывая только сумму часов минут и секунд тоесть сачов надо чтобы было не 24 а более тоесть если я указал интервал в 3 суток то часов было 72 и так далее. Прошу показать более готовы вариант! за ранее спасибо в любом случае! готов отблагодарить!
     
  5. Stas-P

    Stas-P

    Регистр.:
    7 сен 2013
    Сообщения:
    165
    Симпатии:
    125
    Посмотри этот скрипт http://www.littlewebthings.com/projects/countdown/

    Я использовал его в своих проектах, как счетчик отчета. То есть указываешь дату, а он сам выводит сколько осталось до указанной даты.
     
  6. Doctor_Chaos

    Doctor_Chaos Проктолог-гинеколог

    Moderator
    • Супермодератор
    Регистр.:
    7 сен 2013
    Сообщения:
    950
    Симпатии:
    645
    хз почему, но редирект вместо & выдал &amp; поэтому и не перекинуло на нужную страницу. Вот ссылка не активная на тему:
    ruseller.com/lessons.php?rub=32&id=1341
     
  7. KPACHODAP

    KPACHODAP DELETED

    Регистр.:
    21 дек 2009
    Сообщения:
    641
    Симпатии:
    111
    Это немного не то! он должен быть проще! так как таймеров будет выводиться много на одной странице! так вот надо чтобы были только часы минуты и секунды
     
  8. KPACHODAP

    KPACHODAP DELETED

    Регистр.:
    21 дек 2009
    Сообщения:
    641
    Симпатии:
    111

    при обновлении сбрасывает постоянно! надо чтобы указал дату, время начала, дату время конца, а он выводит отчет в часах минутах и секундах ! ничего лишнего!
     
  9. BDSG

    BDSG

    Регистр.:
    28 фев 2009
    Сообщения:
    203
    Симпатии:
    109
    HTML:
    // до какого времени считаем
    var target_date = new Date( 2013, 9, 16, 0, 0, 0 ).getTime();
    
    var counter = setInterval(function () {
    
        // текущее время
        var current_date = new Date().getTime();
    
        // сколько секунд осталось
        var seconds_left = parseInt( (target_date - current_date) / 1000 );
    
        if( 0 >= seconds_left ){ // приехали
      
          clearInterval( counter );
          return;
        }
    
        console.log( seconds_left );
    
    }, 1000 );
    как распарсить seconds_left в человекопонятное время, думаю сами разберётесь..
     
    KPACHODAP нравится это.
  10. Doctor_Chaos

    Doctor_Chaos Проктолог-гинеколог

    Moderator
    • Супермодератор
    Регистр.:
    7 сен 2013
    Сообщения:
    950
    Симпатии:
    645
    Естесно сбрасывает, там же указано, что время Ч - 10 дней с момента последнего посещения страницы: ts = (Date(Tue Oct 15 2013 15:14:26) + 10*24*60*60*1000;
    т.е. каждое обновление это и есть новая точка отсчета. Выставляй там фиксированную дату и будет тебе счастье: ts = (new Date(2013, 10, 15, 0, 0, 0)) + 10*24*60*60*1000;