倒计时没有按原样重置

时间:2014-04-02 10:14:43

标签: javascript jquery datetime

我创建了一个倒计时,它在每日基础上倒数到特定时间(hh:mm:ss),比如说晚上7点或19:00点。一旦通过晚上7点,倒计时应该重置为23:59:59,但它正在计算从上一次设置开始经过的时间(-00 -00 -01)。

如何让定时器一旦通过就重置到接下来的24小时?

DEMO:http://jsfiddle.net/p3f2X/(尝试将时间设置为一天的过去时间 - 例如,在您的时区下午4点,然后将其设置为下午3点以查看错误)

function ShowTime() {
  var now = new Date();
  var hrs = 18-now.getHours();
  var mins = 60-now.getMinutes();
  var secs = 60-now.getSeconds();
      timeLeft = "" +hrs+' hours '+mins+' minutes '+secs+' seconds';
  $("#countdown").html(timeLeft);
}

setInterval(ShowTime ,1000);

2 个答案:

答案 0 :(得分:1)

真正的问题在于你不想让负数小时,分钟或秒变量,为了解决这个问题,你可以这样做:

使用此代码,您也可以将数字更改为19,0和0,因为它更清晰,并阻止显示60 seconds

var hours=19-now.getHours()-1;
if(hours<0)hours+=24;
var minutes=0-now.getMinutes()-1;
if(minutes<0)minutes+=60;
var seconds=0-now.getSeconds();
if(seconds<0)seconds+=60;

这是Demo

答案 1 :(得分:0)

function ShowTime() {
  var now = new Date();
  var hrs;    
  var mins = 59-now.getMinutes();
  var secs = 59-now.getSeconds();
    if(now.getHours()>18)
        hrs=24+18-now.getHours();
        else
        hrs= 18-now.getHours();
      timeLeft = "" +hrs+' hours '+mins+' minutes '+secs+' seconds';
  $("#countdown").html(timeLeft);  
    console.log(now.getHours());
}
setInterval(ShowTime ,1000);