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

Javascript 如何获得从特定日期/时间开始并每小时倒计时的倒计时计时器,javascript,jquery,date,time,countdown,Javascript,Jquery,Date,Time,Countdown,我试图实现一个倒计时计时器,它将使用一个特定的日期和时间来开始。从那里我需要它从1小时倒计时,然后通过添加一小时来更新初始日期和时间,然后无限期地重复它自己 这用于一个产品拍卖,一旦一个产品卖完,它就会得到一个新产品,并且从它加入拍卖时起,价格每小时都会下降,这可能是一天中的任何时间 示例: 我需要这个计时器在2014年7月25日11月30日0月0日开始, 2014年美国东部时间上午11:30)将倒计时1小时,完成后 将在开始日期的基础上增加一个小时,即2014年7月25日12月30日0, 0这

我试图实现一个倒计时计时器,它将使用一个特定的日期和时间来开始。从那里我需要它从1小时倒计时,然后通过添加一小时来更新初始日期和时间,然后无限期地重复它自己

这用于一个产品拍卖,一旦一个产品卖完,它就会得到一个新产品,并且从它加入拍卖时起,价格每小时都会下降,这可能是一天中的任何时间

示例:

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

如果站点访问者刷新了页面,那么页面也不会发生变化,这意味着他们访问页面时只剩下33分钟,而不是每次刷新都将页面重置为1小时

我打算用这个倒计时:

我所需要的是我以可变形式给出的时间。我试图在没有任何运气的情况下尽可能多地研究这个问题,大多数都不够具体,或者只涉及日期而不是时间

我不太精通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'});
});  

非常感谢您的帮助。

您可以使用
setInterval
连续更新倒计时:

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

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

我最终使用了更简单的方法,并最终实现了我最初的要求,使用“现在”而不是特定日期。让计时器每小时重置一次,并根据更改的内容刷新页面。在我的例子中,我实际上增加了几分钟的时间,因为一个后台应用程序需要一两分钟来完成用新信息更新服务器的通信。它基本上是为了消除延迟时间,为页面访问者提供更好的用户体验

这是我的密码:

  $(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);
  }); 

这确实让我明白了我需要什么,但我如何在设定的日期和时间开始,然后更新那个日期和时间,让它知道重新开始计数。我真的不太擅长Javascript。我是否会传递jQuery
$('#auctioncountdown').countdown({until:diff,format'HMS')在setInterval函数中?我几乎可以看到我需要做什么,只需要在正确的方向上进行额外的推动。只需阅读倒计时插件的文档,它就会自动为您更新倒计时。你不必担心每小时更新一次,也不必担心时间。您只需执行
倒计时({until:endTime,format:'dH'})
即可只显示剩余的天数和小时数。要将倒计时设置为从现在以外的日期/时间开始,只需将
设置为该日期:
倒计时({until:endTime,since:startTime})它必须在特定的时间开始,我们将产品添加到拍卖中,然后每小时降价一次,直到有人以该价格购买它,然后它被取消拍卖,一个新产品进入拍卖。我希望它每小时重置一次,以便在下次价格下降时给访问者提供服务。现在将无法获得该值。因为在倒计时计时器上具有优先级,因此使它对
倒计时({until:endTime,since:startTime})进行倒计时而不是倒计时它在文档中说明了这一点。看起来它会这样工作,但前提是自那时起没有优先权。