我需要根据select元素中的用户选择生成和开始,结束和截止日期,该元素有3个选项1,2和3个月,这里的想法是创建一个循环,它将生成和对象与这3个日期的开始,结束和截止日期,但是对于每次迭代,这些日期大多数会根据用户选择的内容增加1,2或3个月。
示例:
用户选择1个月,迭代次数将为3 所以对象最看起来:
Object 1:
start_date: 2017/10/31
end_date: 2017/11/30
Object 2:
start_date: 2017/11/30
end_date: 2017/12/31
Object 3:
start_date: 2017/12/31
end_date: 2018/01/31
这是功能:
public DatesGenerator(futercampaign: ICampaign, searchparam: any, i: number): ICampaign {
let num: number;
let month: number;
let tempDate: Date;
let deadline: Date = new Date(searchparam.start_date);
let periodicity: Date = new Date(searchparam.start_date);
if (searchparam.periodicity === 'onemonth') { num = (i * 1); month = 1; } else if (searchparam.periodicity === 'twomonth') { num = (i * 2); month = 2; } else if (searchparam.periodicity === 'threemonth') { num = (i * 3); month = 3; }
futercampaign.start_date = new Date(periodicity.setMonth(periodicity.getMonth() + num));
/* Storing the start_date temporarily */
tempDate = new Date(futercampaign.start_date);
/* Calculating the End Date */
futercampaign.end_date = new Date(tempDate.setMonth(tempDate.getMonth() + month));
/* Calculating the Deadline */
futercampaign.deadline = new Date(tempDate.setDate(tempDate.getDate() - searchparam.deadline));
return futercampaign;
}
searchparam只是和对象保存用户选择,在这种情况下存储start_date和周期(1,2或3个月)。
我的问题是,当用户选择最后一天时,可以说是oct 31,而下个月也没有31天,在这种情况下,当月11月也会跳到12月31日。