【问题标题】:How to get a countdown timer that starts on a specific date/time and counts down every hour如何获得从特定日期/时间开始并每小时倒计时的倒计时计时器
【发布时间】:2014-10-19 02:29:31
【问题描述】:

我正在尝试实现一个倒数计时器,它会使用特定的日期和时间来启动它。从那里我需要它从 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'});
});  

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript jquery date time countdown


    【解决方案1】:

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

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

    setInterval 将导致您传入的函数每小时连续运行一次(在这种情况下)。

    【讨论】:

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

    我最终选择了一些更简单的方法,并最终实现了我最初的要求,使用“现在”而不是特定日期。让计时器每小时重置一次并刷新页面以更改内容。在我的情况下,我实际上增加了几分钟的时间,因为后台应用程序需要一两分钟来完成更新服务器与新信息的通信。基本上是为了摆脱滞后时间,为页面访问者提供更好的用户体验。

    这是我的代码:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多