Момент .JS - Почему разница не в формате полного года - PullRequest
3 голосов
/ 18 октября 2019

Для следующего JavaScript, я ожидал, что результат будет 1, но это не так, какое-либо объяснение?

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

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

0.9965981505438167

Какие даты начала и окончания дадут 1 полный год?

Ответы [ 2 ]

1 голос
/ 18 октября 2019

Это потому, что diff дает вам разницу в миллисекундах, а затем пересчитывается по годам, давая вам значение 0.99 ..

Чтобы получить разницу в годах, вы можете сделать это:

endDate.diff(startDate, 'year');

и вы получите 1, как хотели

0 голосов
/ 18 октября 2019

Попробуйте, может быть, вы сможете понять.

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("--------------");
...