我想知道如何在momentjs中获得两个日期之间的年数,而不是完整的年数。
例如,如果我选择2017年12月30日至2020年1月2日,我希望结果为4或包含的4年的数组(2017201820192020(。如果我在这个例子中计算全年,我不会得到4,因为两个日期之间的毫秒数都小于4年。
假设date1
和date2
是力矩对象:
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>