代码之家  ›  专栏  ›  技术社区  ›  Mauro74

在JavaScript中创建起始日期的日期数组并进行响应

  •  -1
  • Mauro74  · 技术社区  · 7 年前

    我有一个React组件,其中有一个日期字符串,我需要从中生成一个表示未来11天的日期数组,不包括开始日期(10/12/2016)。不知道如何做到这一点。到目前为止,我一直在尝试这样做,但问题是,通过简单地循环为当天的每个迭代添加1,当11天的日期范围跨越两个月时,它将无法生成正确的日期:

    addDays = () => {
       const { startDate } = this.props.pageData.parcelDetails.parcelDetails;
       const date = new Date(startDate);
       let datesCollection = []
    
       for (var i = 1; i < 12; i++) {
         datesCollection.push(`${date.getDate() + i}/${date.getMonth() + 1}/${date.getFullYear()}`)
       }
    
       return datesCollection
    }
    

    [
       "11/12/2016",
       "12/12/2016",
       "13/12/2016",
       "14/12/2016",
       "15/12/2016",
       "16/12/2016",
       "17/12/2016",
       "18/12/2016",
       "19/11/2016",
       "20/12/2016",
       "21/12/2016"
    ]
    

    2 回复  |  直到 7 年前
        1
  •  0
  •   jbialobr    7 年前

    你可以这么做:

    addDays = () => {
      const { startDate } = this.props.pageData.parcelDetails.parcelDetails;
      const date = new Date(startDate);
      let datesCollection = []
    
      for (var i = 1; i < 12; i++) {
        const newDate = new Date(date.getTime() + i * 1000 * 60 * 60 * 24);
        datesCollection.push(`${newDate.getDate()}/${newDate.getMonth() + 1}/${newDate.getFullYear()}`);
      }
    
      return datesCollection
    }
    
        2
  •  0
  •   George    7 年前

    您可以尝试为每个循环添加1天。

    var dateuse = new Date();
    dateuse.setDate(dateuse.getDate() + 1);
    

    或者你可以试试 Moment.js

    var today = moment();
    var dateuse = moment(today).add(1, 'days');
    
    推荐文章