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