从JavaScript和React开始日期开始创建日期数组

时间:2018-10-01 12:35:35

标签: javascript reactjs date

我有一个React组件,其中有一个日期字符串,我需要根据该日期字符串生成一个表示未来11天(不包括开始日期)的日期数组(2016年10月12日)。不知道如何实现这一目标。到目前为止,这就是我尝试过的方法,但问题是,当一天的每次迭代简单地循环添加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 个答案:

答案 0 :(得分:0)

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

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

或者您可以尝试Moment.js

var today = moment();
var dateuse = moment(today).add(1, 'days');

答案 1 :(得分:0)

您可以简单地做到这一点:

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
}