10个月内的日期

时间:2019-05-13 21:05:44

标签: javascript ecmascript-6

我想对包含日期的对象进行排序。我只想要日期离今天的日期不超过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。这只是一个示例。

有什么想法可以解决日期已经过了几年的问题吗?

2 个答案:

答案 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。