使用 momentjs 计算到特定日期的天数

Calculate days to go until a particular date with momentjs

我想使用 momentjs 倒计时直到特定事件发生,但我得到了意想不到的结果。

今天的日期是 4 月 17 日,活动日期是 5 月 14 日,我希望得到的天数是 27,但是我的代码给出的结果是 57。有什么问题吗?

function daysRemaining() {
    var eventdate = moment([2015, 5, 14]);
    var todaysdate = moment();
    return eventdate.diff(todaysdate, 'days');
}
alert(daysRemaining());

那是因为月份是零索引的。所以 5 实际上是六月 ;)

使用数组创建矩对象时,必须注意月、时、分、秒和毫秒均为零索引。年份和月份中的日期为 1 索引。这是为了镜像本机 Date 参数。

Reference

因此要么将月份更改为 4 以反映 5 月,要么将日期解析为 ISO 8601 string

function daysRemaining() {
    var eventdate = moment("2015-05-14");
    var todaysdate = moment();
    return eventdate.diff(todaysdate, 'days');
}
alert(daysRemaining());

只是为遇到此问题的其他人添加 - 实际上有一个帮手为您做措辞等:

https://momentjs.com/docs/#/displaying/to/

/* Retrieve a string describing the time from now to the provided date */
daysUntil: function(dateToCheckAgainst){
    return new moment().to(moment(dateToCheckAgainst));
}

// Sample outputs
"in three months"
"in two months"
"in 25 days"