当今天和明天的日期(4月17日和18日)与当前时刻(现在是4月17日,对我来说)使用momentjs diff函数进行比较时,数字计算的天数均为0.
为什么这样,以及什么方法可以获得更明智的结果?
function daysRemaining(eventdate) {
var eventdatemoment = moment(eventdate);
var todaysdate = moment();
return eventdatemoment.diff(todaysdate, 'days');
}
console.log(daysRemaining('2015-04-16'));
console.log(daysRemaining('2015-04-17'));
console.log(daysRemaining('2015-04-18'));
console.log(daysRemaining('2015-04-19'));
给出结果:
-1
0
0
1
答案 0 :(得分:1)
默认情况下,
moment#diff
会返回向下舍入的数字。如果需要浮点数,请将true
作为第三个参数。在2.0.0之前,moment#diff
返回舍入的数字,而不是舍入的 down 数字。
因为您在2015年4月17日午夜之后运行此代码,所以现在"现在"之间的整天数量向下舍入。 2015年4月18日午夜为0
。
我可以看到两种选择,以获得更多"明智的"回答:
true
的第三个参数传递.diff()
以获取浮点数,而不进行舍入。您可以看到结果here。todaysdate
的值时,请使用moment().startOf('day')
获取今天午夜的日期,这将明确与1
明天的天数差异。 答案 1 :(得分:1)
function daysRemaining(eventdate) {
var eventdatemoment = moment(eventdate);
// Remove hours, minutes, seconds, etc. from today's date.
var todaysdate = moment().startOf('day');
return eventdatemoment.diff(todaysdate, 'days');
}
console.log(daysRemaining('2015-04-16'));
console.log(daysRemaining('2015-04-17'));
console.log(daysRemaining('2015-04-18'));
console.log(daysRemaining('2015-04-19'));