Отображение обратного отсчета, когда осталось менее 24 часов - PullRequest
1 голос
/ 02 мая 2020

Я пытаюсь отобразить часы обратного отсчета, только когда осталось менее 24 часов. Я не написал оригинальный код. Я думаю, что это должно быть ...

if (distance < end + ???) {

Но я не уверен, что добавить ???. Вот полный код ...

var end = new Date('05/03/2020 20:00 UTC+1');  
var _second = 1000;
var _minute = _second * 60;
var _hour = _minute * 60;
var _day = _hour * 24;
var timer;

function showRemaining() {
    var now = new Date();
    var distance = end - now;

    // When countdown over show finished
    if (distance < 0) {

        clearInterval(timer);
        document.getElementById('countdown').innerHTML =
        "Finished!";

        return;
    }

    var days = Math.floor(distance / _day);
    var hours = Math.floor((distance % _day) / _hour);
    var minutes = Math.floor((distance % _hour) / _minute);
    var seconds = Math.floor((distance % _minute) / _second);

// Only show countdown is less than 24 hours remains
    if (distance < end + ???) {
         // document.getElementById('countdown').innerHTML = days + ':';
          document.getElementById('countdown').innerHTML = hours + ' : ';
          document.getElementById('countdown').innerHTML += minutes + ' : ';
          document.getElementById('countdown').innerHTML += seconds + '';
      }
  }

timer = setInterval(showRemaining, 1000);     

https://jsfiddle.net/yvb4dahn/3/

Ответы [ 2 ]

0 голосов
/ 02 мая 2020

Вы можете использовать это для вычисления разницы во времени:

var oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
var firstDate = new Date('05/03/2020 20:00 UTC+1');
var secondDate = new Date();

var diffDays = Math.round(Math.abs((firstDate - secondDate) / oneDay));

Это даст вам результат 1. Итак, вам нужно:

if (diffDays < 2 && diffDays > 0)

Это начнется только если остался один день.

var end = new Date('05/03/2020 20:00 UTC+1');  
var _second = 1000;
var _minute = _second * 60;
var _hour = _minute * 60;
var _day = _hour * 24;
var timer;

function showRemaining() {
    var now = new Date();
    var distance = end - now;
    
    // When countdown over show finished
    if (distance < 0) {

        clearInterval(timer);
        document.getElementById('countdown').innerHTML =
        "Finished!";

        return;
    }
    
    var days = Math.floor(distance / _day);
    var hours = Math.floor((distance % _day) / _hour);
    var minutes = Math.floor((distance % _hour) / _minute);
    var seconds = Math.floor((distance % _minute) / _second);

// Only show countdown is less than 24 hours remains


var oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
var firstDate = new Date('05/03/2020 20:00 UTC+1');
var secondDate = new Date();

var diffDays = Math.round(Math.abs((firstDate - secondDate) / oneDay));
 
	if (diffDays < 2 && diffDays > 0) {
         // document.getElementById('countdown').innerHTML = days + ':';
          document.getElementById('countdown').innerHTML = hours + ' : ';
          document.getElementById('countdown').innerHTML += minutes + ' : ';
          document.getElementById('countdown').innerHTML += seconds + '';
      }
  }

timer = setInterval(showRemaining, 1000);
<div id="countdown"></div>
0 голосов
/ 02 мая 2020

Это работает, если вы измените свое состояние на это if (distance < 86400000) {. Это число составляет 24 часа в миллисекундах.

var end = new Date('05/03/2020 10:00 UTC+1');  
var _second = 1000;
var _minute = _second * 60;
var _hour = _minute * 60;
var _day = _hour * 24;
var timer;

function showRemaining() {
    var now = new Date();
    var distance = end - now;

    // When countdown over show finished
    if (distance < 0) {

        clearInterval(timer);
        document.getElementById('countdown').innerHTML =
        "Finished!";

        return;
    }
    
    var days = Math.floor(distance / _day);
    var hours = Math.floor((distance % _day) / _hour);
    var minutes = Math.floor((distance % _hour) / _minute);
    var seconds = Math.floor((distance % _minute) / _second);

// Only show countdown is less than 24 hours remains
	if (distance < 86400000) {
         // document.getElementById('countdown').innerHTML = days + ':';
          document.getElementById('countdown').innerHTML = hours + ' : ';
          document.getElementById('countdown').innerHTML += minutes + ' : ';
          document.getElementById('countdown').innerHTML += seconds + '';
      }
  }

timer = setInterval(showRemaining, 1000);    
<div id="countdown"></div>

Больше информации о js датах и ​​форматах: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

Надеюсь, это помогло вам:)

...