我创建了一个倒计时,它在每日基础上倒数到特定时间(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);
答案 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);