// 這邊範例直接給定日期,有需要傳入變數請自行改寫成方法
const startDate = moment('2017-01-01');
const endDate = moment('2018-01-01');// 計算兩者差異年數
const years = endDate.diff(startDate, ‘years’);
// 計算兩者差異月數,這邊要扣掉上面計算的差異年,否則會得到12個月
const months = endDate.diff(startDate, ‘months’) - (years * 12);// 把差異的年、月數加回來,否則會變成計算起訖日相差的天數(365天)
startDate.add(years, 'years').add(months, 'months');
const days = endDate.diff(startDate, 'days');console.log('years = ', years); // 1
console.log('months = ', months); // 0
console.log('days = ', days); // 0// 若比較 2017-04-07 & 2018-10-06
// 則年月日差異 1y 5m 29d
這個方法唯一的限制就是 :結束日一定要比起始日大,不然計算出來的會變成負數,不過這應該不是問題,取絕對值就好了。