如果我的开始日期是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 =新日期(207,01,30);1.获取该日期的当前日期。(x) 2.如果这个月中x<天,则在相同的情况下加上1个月至日期2.1,如果修改日期< x,则将日期设置为前一个月的最后一天。
我的JSFiddle在这里:https://jsfiddle.net/5mfLo8zs/告诉我语法上有什么问题,但是它给了我一个.getDate()不是函数错误,很可能,这不是唯一的问题。
我知道这个主题是重复的,我花了10分钟搜索身份问题,但我找到了如何设置上个月的最后一天,但这里我需要更多的东西。
发布于 2017-07-24 10:38:18
你可以试试这样的东西:
逻辑:
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));
https://stackoverflow.com/questions/45277787
复制相似问题