根据小时设置重置倒数计时

时间:2018-07-23 23:26:39

标签: javascript time timer

如何使计时器更动态地重置。目前,我使用 new Date()进行实时倒计时12小时。例如,如果我想将计时器重置为2小时,那么我需要更多的if和else if语句来进行数学计算。

在不编写20条if语句的情况下循环计时器的正确方法是什么? 目前,如果时间是00:00到11:59,它将从12小时开始倒计时。当时间变为12:01时,我将调用另一个方程式,即23减去当前小时,以确定新的倒计时小时。

如果我要进行倒计时,每4或2个小时而不是每12个小时重置一次,那么我需要创建更多我不愿意做的if语句。

function timer() {
  var currentTime = new Date()
  var hours = currentTime.getHours() 
  var minutes = currentTime.getMinutes()
  var seconds = currentTime.getSeconds()
  if (hours < 12) { 
      var hoursLeft = 11 - hours; 
      var minsLeft = 60 - minutes;
      var secsLeft = 60 - seconds;

      if(minsLeft==60) {
        minsLeft=0;
        hoursLeft++;
      }

      if(secsLeft==60) {
        secsLeft=0;
        minsLeft++;
      }
  } else if (hours >= 12) {
    var hoursLeft = 23 - hours;
    var minsLeft = 60 - minutes;
    var secsLeft = 60 - seconds;

    if(minsLeft==60) {
        minsLeft=0;
        hoursLeft++;
    } 

   if(secsLeft==60) {
     secsLeft=0;
     minsLeft++;
    }
  }
}
var countdownTimer = setInterval('timer()', 1000);

codepen example

1 个答案:

答案 0 :(得分:0)

这可能会有所帮助。我创建了另一个计时器,该计时器清除第一个计时器,然后重新启动原始计时器功能。我不清楚这是否是您要使用的确切用途,但它应该使您朝正确的方向前进。如果您希望重置为某个时间,可以在启动timer()之前在timerUpdate函数中进行更改。

function timer() {
	var currentTime = new Date()
	var hours = currentTime.getHours() 
	var minutes = currentTime.getMinutes()
	var seconds = currentTime.getSeconds()
	if (hours < 2) { 
		var hoursLeft = 1 - hours; 
		var minsLeft = 60 - minutes;
	  var secsLeft = 60 - seconds;

		if(minsLeft==60) {
			minsLeft=0;
			hoursLeft++;
		}
    
		if(secsLeft==60) {
			secsLeft=0;
			minsLeft++;
		}
	} else if (hours >= 2) {
		var hoursLeft = 2 + 1 - hours;
		var minsLeft = 60 - minutes;
		var secsLeft = 60 - seconds;

		if(minsLeft==60) {
			minsLeft=0;
			hoursLeft++;
		} 
    
	 if(secsLeft==60) {
			secsLeft=0;
      minsLeft++;
		}
	}
  
	document.getElementById('timerUpFront').innerHTML= "<br><strong>countdown</strong><br>"+ hoursLeft + " hours " + minsLeft + " minutes " + secsLeft + " seconds";
}


var countdownTimer = setInterval('timer()', 1000);
var resetTimer = setInterval("timerUpdate()", 1000*60*4);

function timerUpdate(){
  clearTimeout(countdownTimer);
  timer();
}