倒计时未按预期重置

Countdown not resetting as it should

本文关键字:倒计时      更新时间:2023-09-26

我创建了一个倒计时,它每天倒计时到特定时间(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);