Для следующего JavaScript, я ожидал, что результат будет 1, но это не так, какое-либо объяснение?
var startDate = moment('2018-01-01'); var endDate = moment('2018-12-31'); moment.duration(endDate.diff(startDate)).asYears() 0.9965981505438167
Какие даты начала и окончания дадут 1 полный год?
Это потому, что 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("--------------");