每周一、周三和周五 2000 小时的 JavaScript 倒数计时器

时间:2021-03-11 07:21:28

标签: javascript ecmascript-6

我正在尝试使用 JavaScript 为每个星期一、星期三和星期五的 2000 小时创建一个倒数计时器。 倒计时一直工作到 2000 小时,但在那之后它不起作用,而且我不知道如何切换周,即周五切换到下周一,因为有 3 天计数,一周正常有两天,我也不知道想显示天数。

我想将天数转换为小时数,而我的用户界面就像是 47h 59m 50s。

如果有人能弄清楚如何创建这个倒计时,我将不胜感激。

const gameCountdown = setInterval(function() {
  var gameDay;
  var currentDateTime = new Date();
  var currentDay = currentDateTime.getDay();
  var currentTime = currentDateTime.getTime();
  var gameTime = new Date(currentDateTime.getFullYear(), currentDateTime.getMonth(), currentDateTime.getDate(), 20, 0, 0); // current day 8pm
  var gameDay = (currentDay % 2 === 0) ? currentDay + 1 : currentDay;
  if ((currentDay === gameDay) && (gameTime.getHours() >= 20)) {
    gameTime = currentDateTime.setDate(currentDateTime.getDate() + 2);
  }
  var countdownTime = gameTime.getTime();
  var difference = parseInt((countdownTime - currentTime));
  if (difference > 0) {

    var hours = Math.floor((difference / (1000 * 60 * 60)) % 24);
    var mins = Math.floor((difference / (1000 * 60)) % 60);
    var sec = Math.floor((difference / 1000) % 60);
    document.querySelector('#hours').innerHTML = hours + 'h';
    document.querySelector('#min').innerHTML = mins + 'm';
    document.querySelector('#sec').innerHTML = sec + 's';
  } else {

    var hours = Math.floor((difference / (1000 * 60 * 60)) % 24);
    var mins = Math.floor((difference / (1000 * 60)) % 60);
    var sec = Math.floor((difference / 1000) % 60);
    document.querySelector('#hours').innerHTML = hours + 'h';
    document.querySelector('#min').innerHTML = mins + 'm';
    document.querySelector('#sec').innerHTML = sec + 's';

  }
}, 1000);
<span id="hours"></span>
<span id="min"></span>
<span id="sec"></span>

1 个答案:

答案 0 :(得分:0)

这对你有用吗?

const getGameTime = (currentTime) => {
  let gameDate = new Date(currentTime)
  let offset = 0;
  if (gameDate.getHours() >= 20) {
    offset += gameDay === 5 ? 3 :  // Friday after 20:00
                              1; // any other day
  }
  gameDate.setDate(gameDate.getDate() + offset);  
  let gameDay = gameDate.getDay();
  offset = 0;
  if (gameDay === 0) offset += 1; // Sunday
  else if (gameDay === 2 || gameDay === 4) offset += 1; // Tuesday or Thursday
  else if (gameDay === 6) offset += 2; // Saturday
  gameDate.setDate(gameDate.getDate() + offset);  
  gameDate.setHours(20, 0, 0);
  return gameDate.getTime();
}

const gameCountdown = setInterval(function() {
  var gameDay;
  var currentDateTime = new Date();
  var currentDay = currentDateTime.getDay();
  var currentTime = currentDateTime.getTime();
  var countdownTime = getGameTime(currentTime);
  var difference = parseInt((countdownTime - currentTime));
  var hours = Math.floor((difference / (1000 * 60 * 60)));
  var mins = Math.floor((difference / (1000 * 60)) % 60);
  var sec = Math.floor((difference / 1000) % 60);
  document.querySelector('#hours').innerHTML = hours + 'h';
  document.querySelector('#min').innerHTML = mins + 'm';
  document.querySelector('#sec').innerHTML = sec + 's';


}, 1000);
<span id="hours"></span>
<span id="min"></span>
<span id="sec"></span>

相关问题