我创建了一个倒计时,它每天倒计时到特定时间(hh:mm:ss),比如说晚上 7 点或 19:00:00。晚上 7 点过后,倒计时应重置为 23:59:59,但相反,它会计算从上一个设置的时间经过的时间 (-00 -00 -01)。
如何制作计时器,使其在通过后重置为下一个 24 小时?
演示: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);
这里真正的问题是你不想有一个负的小时、分钟或秒变量,要解决这个问题,你可以这样做:
使用此代码,您还可以将数字更改为 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;
这是一个演示
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);