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

Hig*_*lar 10 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());
Run Code Online (Sandbox Code Playgroud)

Bar*_*cha 21

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

参考

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

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


Chr*_*ris 5

只是为遇到此问题的其他人添加 - 实际上有一个助手可以为您进行措辞等:

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"
Run Code Online (Sandbox Code Playgroud)