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

时间:2015-04-16 22:42:03

标签: javascript 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());

3 个答案:

答案 0 :(得分:15)

使用数组创建时刻对象时,必须注意几个月,几小时,几分钟,几秒和几毫秒都是零索引。该月份的年份和日期均为1个索引。这是为了镜像原生的Date参数。

Reference

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

只需为遇到此问题的其他任何人添加-实际上有一个帮您完成措辞等工作的助手:

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"