如果我的开始日期是1月31日,我加1个月,则返回3月2日的日期。 我正在尝试制作一个脚本,以这种方式添加数月:
starting date : 31/01/2000
+1 month = 29/02/2000
+2 months = 31/03/2000
+3 months = 30/04/2000
....
+12 months = 28/02/2001
另一个案例:
Starting date : 28/02/2001
+1 month : 31/03/2001
+2 months : 30/04/2001
...
因此,我们的想法是,如果开始日期是当月的最后一天,结束日期必须是月份的最后一天。
所以,我的代码逻辑如下:
var date = new Date(2017,01,30); 1.获取此日期的当前日期。 (X) 2.如果x <本月的日子,到目前为止增加1个月 2.1同样如果,如果修改日期&lt; x,将日期设置为上个月的最后一天 3.主要的if,设定日期到下个月的最后一天
我的JSFiddle在这里:https://jsfiddle.net/5mfLo8zs/ Idk语法有什么问题,但它给了我一个.getDate()不是函数错误,可能,它不是唯一的问题。
P.S。我知道这个主题是重复的,我花了10分钟来搜索同意的问题,但我发现如何设置月的最后一天,但在这里我需要更多的东西。
答案 0 :(得分:2)
您可以尝试这样的事情:
function addMonths(date, months) {
var d = 0;
var next = new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1);
if (next.getMonth() === date.getMonth()) {
d = date.getDate()
}
else{
months++
}
// use following line in actual code.
// return new Date(date.getFullYear(), date.getMonth() + months, d)
// This line is just fror demonstration purpose.
return new Date(date.getFullYear(), date.getMonth() + months, d).toDateString();
}
console.log(addMonths(new Date(2017, 0, 31), 1));
console.log(addMonths(new Date(2017, 0, 31), 3));
console.log(addMonths(new Date(2017, 0, 15), 3));
console.log(addMonths(new Date(2016, 11, 31), 1));
console.log(addMonths(new Date(2016, 11, 11), 1));
&#13;