在JavaScript中创建起始日期的日期数组并作出反应

在JavaScript中创建起始日期的日期数组并作出反应,javascript,reactjs,date,Javascript,Reactjs,Date,我有一个React组件,其中有一个日期字符串,我需要从中生成一个日期数组,表示除开始日期(2016年12月10日)以外的未来11天。不知道如何实现这一点。这就是我迄今为止所尝试的,但问题是,通过简单地循环为当天的每个迭代添加1,当11天的日期范围跨越两个月时,它将无法生成正确的日期: addDays = () => { const { startDate } = this.props.pageData.parcelDetails.parcelDetails; const dat

我有一个React组件,其中有一个日期字符串,我需要从中生成一个日期数组,表示除开始日期(2016年12月10日)以外的未来11天。不知道如何实现这一点。这就是我迄今为止所尝试的,但问题是,通过简单地循环为当天的每个迭代添加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
}

如何生成正确的数组,以及每个月的正确日期?

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

var dateuse = new Date();
dateuse.setDate(dateuse.getDate() + 1);
或者你可以试试


你可以简单地做到:

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
}
addDays=()=>{
const{startDate}=this.props.pageData.parcelDetails.parcelDetails;
施工日期=新日期(起始日期);
让datesCollection=[]
对于(变量i=1;i<12;i++){
const newDate=新日期(Date.getTime()+i*1000*60*60*24);
datesCollection.push(`newDate.getDate()}/${newDate.getMonth()+1}/${newDate.getFullYear()}`);
}
返回日期收集
}

date.getMonth()
,所以一月是0,只需将1添加到
date.getMonth()
,或者如果确实需要,使用类似
https://momentjs.com/docs/#/manipulating/
@George Thank you,修正了这个问题,并相应地编辑了这个问题。问题是,通过简单地循环为当天的每个迭代添加1,当11天的日期范围跨越两个月时,它将无法生成正确的日期。在这种情况下,我建议使用where,它将处理对您来说,顶部代码块的可能复制在两个月之间将不起作用,例如,如果日期
2018/09/30
对我有效。dateuse.setDate(dateuse.getDate()-1);返回太阳2018年9月30日10:19:42 GMT-0300这是因为您正在执行
-1
var today = moment();
var dateuse = moment(today).add(1, 'days');
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
}