我想倒数直到使用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());
答案 0 :(得分:15)
使用数组创建时刻对象时,必须注意几个月,几小时,几分钟,几秒和几毫秒都是零索引。该月份的年份和日期均为1个索引。这是为了镜像原生的Date
参数。
因此,要么将月份更改为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"