使用moment.js返回负倒计时

时间:2017-06-20 14:45:53

标签: javascript momentjs countdown

我创建了倒计时,但它返回的是负输出而不是正输出。我已经研究过这种情况发生的原因,但没有运气。有谁知道为什么倒计时可以返回负数?在我的代码中我把它变成负面的? 提前谢谢!

var now = moment();

var targetDay = now.format("2020-11-03", "dddd, MMMM Do YYYY");

var countDown= Math.floor(moment().diff(targetDay, 'seconds'));

var Days, Minutes,Hours,Seconds;

  setInterval(function(){
   // Updating Days 
   Days =pad(Math.floor(countDown / 86400),2);
    //updating Hours
    Hours = pad(Math.floor((countDown - (Days * 86400)) / 3600),2);
  // Updating Minutes
    Minutes =pad(Math.floor((countDown - (Days * 86400) - (Hours * 3600)) / 60),2);
// Updating Seconds
   Seconds = pad(Math.floor((countDown - (Days * 86400) - (Hours* 3600) - (Minutes * 60))), 2);

  // Updation our HTML view
 document.getElementById("days").innerHTML=Days + ' Days';
 document.getElementById("hours").innerHTML=Hours + ' Hours';
 document.getElementById("minutes").innerHTML=Minutes+ ' Minutes';
 document.getElementById("seconds").innerHTML=Seconds + ' Seconds';

     // Decrement 
 countDown--;


if(countDown === 0){
    countDown= Math.floor(moment().diff(targetDay, 'seconds'));
}

 },1000);
  // Function for padding the seconds i.e limit it only to 2 digits
    function pad(num, size) {
        var s = num + "";
        while (s.length < size) s = "0" + s;
        return s;
    }

1 个答案:

答案 0 :(得分:2)

引自momentjs docs:

  

默认情况下,moment#diff将返回一个向零舍入的数字   (向下为正,向下为负)   如果时刻早于您传递的那一刻   moment.fn.diff,返回值为负。

因此,要解决此问题,您应该使用以下代码

var now = moment();
var targetDay = moment('2020-11-23', 'YYYY-MM-DD');
var countDown= Math.floor(targetDay.diff(now, 'seconds'));

价值将是积极的,因为targetDay时刻是你传递给moment.diff

的那一刻