Javascript JS-为什么差异不是全年格式

Javascript JS-为什么差异不是全年格式,javascript,momentjs,Javascript,Momentjs,对于下面的JavaScript,我希望输出为1,但事实并非如此,有什么解释吗 var startDate = moment('2018-01-01'); var endDate = moment('2018-12-31'); moment.duration(endDate.diff(startDate)).asYears() 0.9965981505438167 什么开始和结束日期会给出一整年?这是因为diff以毫秒为单位给出差值,然后以年为单位重新计算,得出0.99。。价值观 为了在年数

对于下面的JavaScript,我希望输出为1,但事实并非如此,有什么解释吗

var startDate = moment('2018-01-01');
var endDate = moment('2018-12-31');

moment.duration(endDate.diff(startDate)).asYears()

0.9965981505438167

什么开始和结束日期会给出一整年?

这是因为diff以毫秒为单位给出差值,然后以年为单位重新计算,得出0.99。。价值观

为了在年数上有所不同,您可以这样做:

endDate.diff(startDate, 'year');

你会得到想要的1个

试试这个,也许你能理解

var startDate = moment("2018-01-01").startOf("day");
var endDate = moment("2019-01-01").startOf("day");
// var endDate = moment("2018-12-31").startOf("day");  try this also.
console.log(startDate);
console.log(endDate);
console.log("--------------");
console.log(endDate.diff(startDate, "days"));
console.log(endDate.diff(startDate, "years"));
console.log("--------------");

开始
'2018-01-01'
和结束
'2019-01-01'
?@VLAZ还没有满一年-0.9993360575508053是的,刚刚尝试过。奇怪的我用
startDate=moment('2018-01-01T10:00:00')
endDate=moment('2019-01-01T15:49:12')
度过了整整一年。那么,时刻算不算一年中所有的时间?包括我们在夏令时使用“隐藏”的那些?我没有仔细检查,但是5:49应该很接近每年额外的时间。我们每四年会多出一天,但如果是一个世纪,就不会多出一天,除非是一个可以被400整除的世纪。