Как сделать обратный отсчет времени после 0 0 0 0 снова до обратного отсчета в javascript? - PullRequest
0 голосов
/ 21 июня 2020

Я просто хочу знать, как сделать обратный отсчет после 0 0 0 0 прямо обратно к 23:59:59, поэтому у меня проблема, когда я пытаюсь создать функцию обратного отсчета, когда ее срок истек, она будет go до -0d - 0h -0m -1s, -0d -0h -0m -2s, но когда я обновляю sh, он возвращается к 23.59.58, 23,59,57. Я просто хочу знать, что после четкого интервала это Direcy go до 23.59.59, а не -0d -0h -0m -0s. это мой скрипт

обратный отсчет. js

function warTime2(countDownDate) {
  var countDownDate = new Date();
  countDownDate.setHours(14);
  countDownDate.setMinutes(0);
  countDownDate.setSeconds(0);

  var now = new Date();

  if (now.getHours() < countDownDate.getHours()) {
    countDownDate = countDownDate;
  } else if (countDownDate.getHours() <= now.getHours()) {
    countDownDate.setDate(countDownDate.getDate() + 1);
  }

  var x = setInterval(function () {
    var now = new Date();

    var distance = countDownDate - now;

    // Time calculations for days, hours, minutes and seconds
    var hours = Math.floor(
      (distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)
    );
    var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
    var seconds = Math.floor((distance % (1000 * 60)) / 1000);

    if (hours < 10) {
      hours = "0" + hours;
    }
    if (minutes < 10) {
      minutes = "0" + minutes;
    }
    if (seconds < 10) {
      seconds = "0" + seconds;
    }

    document.getElementById("second_chip_war").innerHTML =
      "02:00 PM War Start in " + hours + ":" + minutes + ":" + seconds;

    if (distance < 0) {
      clearInterval(x);
      let newDate = countDownDate + 8 * 3600 * 1000;
      warTime2(newDate);
    }
  }, 1000);
}

Спасибо, рад слышать, если вы хотите мне помочь

1 Ответ

1 голос
/ 21 июня 2020

Вам нужно проверить, действительно ли distance меньше 0 при первом назначении, и если да, увеличьте countDownDate на день перед пересчетом расстояния и продолжением функции:

function warTime2(countDownDate) {
  var countDownDate = new Date();
  countDownDate.setHours(14);
  countDownDate.setMinutes(0);
  countDownDate.setSeconds(0);

  var now = new Date();
  if (now.getHours() < countDownDate.getHours()) {
    countDownDate = countDownDate;
  } else
  if (countDownDate.getHours() <= now.getHours()) {
    countDownDate.setDate(countDownDate.getDate() + 1);
  }

  var x = setInterval(function() {
    var now = new Date();

    var distance = countDownDate - now;
    if (distance < 0) {
      // countdown complete, add a day to countDownDate and restart
      countDownDate.setDate(countDownDate.getDate() + 1);
      distance = countDownDate - now;
    }
    // Time calculations for days, hours, minutes and seconds
    var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
    var seconds = Math.floor((distance % (1000 * 60)) / 1000);

    if (hours < 10) {
      hours = "0" + hours;
    }
    if (minutes < 10) {
      minutes = "0" + minutes;
    }
    if (seconds < 10) {
      seconds = "0" + seconds;
    }

    document.getElementById("second_chip_war").innerHTML = "02:00 PM War Start in " + hours + ":" +
      minutes + ":" + seconds;
  }, 1000);
}

warTime2('2020-06-21');
<div id="second_chip_war"></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...