如何获得一个从特定日期/时间开始的倒数计时器,并每小时倒计时

时间:2014-08-25 21:07:02

标签: javascript jquery date time countdown

我正在尝试使用特定的日期和时间来启动倒数计时器。从那里我需要它从1小时倒计时,然后通过添加一个小时更新初始日期和时间,然后无限期地重复。

这用于产品拍卖,一旦产品售罄就会获得新产品,价格从加入拍卖时起每小时下降,可能是一天中的任何时间。

示例:

  

我需要这个计时器在2014年,7月25日,11日,30日,0日,0日(8月25日)开始   2014年美国东部时间上午11:30)它将倒计时1小时,并在完成后   将在开始日期的一小时内添加2014年,7月,25日,12日,30日,0日,   0这将无限期地重复,直到我选择停止它为止。

根据网站访问者是否刷新页面,这也不会改变,这意味着他们访问该页面并看到剩余33分钟,而不是每次刷新时将其重置为1小时。

我打算使用这个倒数计时器:http://keith-wood.name/countdown.html

我需要的是我以变量形式提供它的时间。我试图尽可能地研究这个,没有任何运气,大多数都不够具体或只处理日期而不是时间。

我不是那么精通Javascript和jQuery;这是我到目前为止所做的。

请原谅我的代码,这里有很多想法:

$(document).ready(function() {
    var everyhour = new Date(); 
    //everyhour = new Date(everyhour.getFullYear() + 1, 1 - 1, 1);
    everyhour = 2014, 8-1, 25, 9, 30, 0, 0;
    // the above was my initial try and it wasn't getting me anywhere
    var date  = new Date(2014, 7, 25, 12, 0, 0);
    var now   = new Date();
    var diff  = date.getTime()/1000 - now.getTime()/1000;
    alert (diff);
    // The above was another stab at it, got me a little closer
    var minutesToAdd = 60;
    date.setMinutes(date.getMinutes()+minutesToAdd);
    // the above was something I found on this website and got brain block
   // the below was me trying to start a loop and get the date to update by adding an hour onto it
   //  for i 
   //  if diff = 3600 {
   //    var dated = dated + 1
   //  }
       $('#auctioncountdown').countdown({until: diff, format: 'HMS'});
});  

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用setInterval不断更新倒计时:

   setInterval(function(){
      // update countdown
   }, 1000 * 60); // for every hour

setInterval将导致您传入的函数每小时连续运行(在本例中)。

答案 1 :(得分:0)

我最终选择了更简单的东西,并最终实现了我原来的要求,现在使用'而不是特定的日期。让计时器每小时重置一次,并刷新页面以更改内容。在我的情况下,我实际上添加了几分钟的时间,因为后台应用花了一两分钟的时间进行通信,用新信息更新服务器。它基本上是为了摆脱滞后时间,为页面访问者提供更好的用户体验。

这是我的代码:

  $(document).ready(function() {        
    function ShowTime() {
        var now = new Date();
        var diff = -2;
        var nowTwo = new Date(now.getTime() + diff*60000);  
        var mins = 59-nowTwo.getMinutes();
        var secs = 59-nowTwo.getSeconds();
        timeLeft = "" +mins+'m '+secs+'s';
        $("#auctioncountdown").html(timeLeft);
        if ($("#auctioncountdown").html() === "0m 1s") {
          location.reload(true)
        };
    };
    function StopTime() {
        clearInterval(countdown);   
    }
    ShowTime();
    var countdown = setInterval(ShowTime ,1000);
  });