2014-04-02 30 views
0

我已经创建了一个倒计时到每日基地的特定时间(hh:mm:ss),可以说7pm或19:00: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); 
+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

+0

@TrueBlueAussie问题是关于最多一天。 –

+0

事实上,它应该每天刷新到下一个24小时。 (有一个链接每天会根据24小时内的情况进行更改)。 – user1901096

+0

@TrueBlueAussie这将工作多天,一旦19点钟时钟将从24点开始滴答作响 –

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);