繁体   English   中英

使用moment.js返回负的倒计时

[英]returning a negative countdown using moment.js

我创建了一个倒数计时,但它返回的是负数而不是正数。 我研究了发生这种情况的原因,但是没有运气。 有谁知道为什么倒计时可以返回负数? 在我的代码中我否定了它? 提前致谢!

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;
    }

引用momentjs文档:

默认情况下,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的时刻。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM