如何使用Moment.js和“fromNow”获得正确的输出?

时间:2017-10-26 10:55:29

标签: javascript momentjs

对于以下程序,运行日期为26/10/2017,变量为deadline=29/10/2017

我正在使用moment.js:

var deadline = '29/10/2017'
var days = moment(deadline, "DD/MM/YYYY").fromNow();
console.log(days)
<script src="https://momentjs.com/downloads/moment-with-locales.min.js"></script>

我的输出是in 2 days,但实际上我认为正确的答案是in 3 days

我认为这是因为fromNow也在计算小时数,所以我的问题是,如何重置这个,以便我得到正确的输出?

2 个答案:

答案 0 :(得分:1)

您可以在截止日期时使用.endOf('day')实例,并且您将获得3天。

您还可以在日期之上使用时间戳,例如23:59,以获得相同的功能。

&#13;
&#13;
var deadline = '29/10/2017'
var days = moment(deadline, "DD/MM/YYYY").endOf('day').fromNow();
// Change the time to 23:59:59           ^^^^^^^^^^^^^
console.log(days)
&#13;
<script src="https://momentjs.com/downloads/moment-with-locales.min.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您可以使用fromNow而不是from。有了这个,您可以将今天的日期重置为午夜,并将其与之进行比较:

var deadline = '29/10/2017',
    now = new Date().setHours(0,0,0,0),
    days = moment(deadline, "DD/MM/YYYY").from(now);

console.log(days)
<script src="https://momentjs.com/downloads/moment-with-locales.min.js"></script>