我有一个名为开始日期的url参数,格式为dd-mm-yyyy。我在html字段中输入了字段,我需要为这些输入字段设置日期。我需要将日期设置为这样。如果开始日期(url参数字符串)为01-01-2014,则第一个输入字段的日期应为15-02-2015。这意味着1个月和2个星期后。然后下一个输入字段应该具有15-02-2014之后的1个月和2个星期的日期。这应该发生10次。我正在使用for循环。我为我的输入字段分配了jquery datepicker
。
var initialDate = "01-01-2014";
var x;
for(x=1; x<= 10;x++){
var dateArray = initialDate.split("-");
var dateObj = new Date(dateArray[2],dateArray[1],dateArray[0]);
dateObj.setMonth(dateObj.getMonth()+1);
dateObj.setDate(dateObj.getDate()+14);
// Assign the new date value to input field.
$("#dateOf_installment_"+x).val(dateObj.getDate()+"-"+dateObj.getMonth()+"-"+dateObj.getFullYear());
}
但这并没有给我所需的价值。如何解决这个问题,谢谢大家!
答案 0 :(得分:1)
代码存在2个问题 -
Date对象在Jan-Dec月份使用0-11而不是1-12。因此,当您设置日期对象的月份时,您需要减去1以设置正确的月份。当您将月份转换回1月至12月1日至12月时,您需要添加1。
此外,我稍微更新了您的代码,以便循环继续正常工作。此循环进行3次迭代,但应该可扩展为10。
最后,如果您的答案与预期不同,则此线程可能是问题的原因。 How to add number of days to today's date?
JS小提琴:http://jsfiddle.net/biz79/bteL6138/
var initialDate = "01-01-2014";
var lastDate = initialDate;
var x;
for (x = 1; x <= 3; x++) {
var dateArray = lastDate.split("-");
// sub 1 from month
var dateObj = new Date(dateArray[2], dateArray[1] - 1, dateArray[0]);
dateObj.setMonth(dateObj.getMonth() + 1);
dateObj.setDate(dateObj.getDate() + 14);
// add 1 for month
lastDate = dateObj.getDate() + "-" + (dateObj.getMonth() + 1) + "-" + dateObj.getFullYear();
$("#dateOf_installment_" + x).val(lastDate);
}