用momentjs计算两次约会之间的年数?不是整整几年



我想知道如何在momentjs中获得两个日期之间的年数,而不是完整的年数。

例如,如果我选择2017年12月30日至2020年1月2日,我希望结果为4或包含的4年的数组(2017201820192020(。如果我在这个例子中计算全年,我不会得到4,因为两个日期之间的毫秒数都小于4年。

假设date1date2是力矩对象:

const diff = date2.year() - date1.year() + 1

制作您请求的阵列。

const arr = [...Array(diff).keys()].map(i => i + date1.year())

您可以将开始日期捕捉到年初,并一次循环一年,直到超过结束日期,将年份部分推入结果数组。

const yearArray = (date1, date2) => {
const arr = [];
const date = date1.startOf('year');
do {
arr.push(date.year())
} while(date.add(1, 'year') < date2);
return arr;
};

const date1 = moment("Dec 30, 2017", "MMM DD, YYYY");
const date2 = moment("Jan 02, 2020", "MMM DD, YYYY");
const yearArray = (date1, date2) => {
const arr = [];
const date = date1.startOf('year');
do {
arr.push(date.year())
} while(date.add(1, 'year') < date2);
return arr;
};
console.log(yearArray(date1, date2)); // [2017, 2018, 2019, 2020]
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment-with-locales.min.js"></script>

删除所有日期属性的替代版本访问

const yearArray = (date1, date2) => {
const arr = [];
let year = date1.startOf('year').year();
const endYear = date2.year();
do {
arr.push(year)
} while(year++ < endYear);
return arr;
};

const date1 = moment("Dec 30, 2017", "MMM DD, YYYY");
const date2 = moment("Jan 02, 2020", "MMM DD, YYYY");
const yearArray = (date1, date2) => {
const arr = [];
let year = date1.startOf('year').year();
const endYear = date2.year();
do {
arr.push(year)
} while(year++ < endYear);
return arr;
};
console.log(yearArray(date1, date2)); // [2017, 2018, 2019, 2020]
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment-with-locales.min.js"></script>

最新更新