我想对包含日期的对象进行排序。我只想要日期离今天的日期不超过10个月的对象。
示例
const dates = [new Date('2019/05/20'), new Date('2019/08/03'), new Date('2020/03/20')]
在此示例中,我对最后一个元素不感兴趣,因为它的距离已经超过10个月了。 通过说
dates.forEach(e => {
if (new Date().getMonth() + 10 < e.getMonth() {
console.log('less than 10 months');
}
}
这当然是行不通的,因为最大月份为12。这只是一个示例。
有什么想法可以解决日期已经过了几年的问题吗?
答案 0 :(得分:1)
尝试使用setMonth
计算当前的将来日期:
const targetDate = new Date();
targetDate.setMonth(targetDate.getMonth() + 10);
dates.forEach(e => {
if (targetDate < e) {
console.log('less than 10 months');
}
}
请注意,如果您使用的是moment.js
之类的库,则可以执行以下操作:
const targetDate = moment().add(10, 'M');
dates.forEach(e => {
if (mement(e).isBefore(targetDate)) {
console.log('less than 10 months');
}
}
答案 1 :(得分:0)
IIUC: 您可以计算两个日期之间的差异(以月为单位):
<MainDTOList>
<SubDTO>
<Id>ABC</Id>
<CreatedBy>XXX</CreatedBy>
<SubKey>123045</SubKey>
</SubDTO>
<LockDTO>
<Id>GERTE</Id>
<CreatedBy>VGINA</CreatedBy>
<SubKey>123045</SubKey>
<LockKey>L123045</SubKey>
</LockDTO>
</MainDTOList>
然后使用forEach验证结果是否小于或等于10,或者可以使用array.filter。