Javascript JS特定结束日期计算器

Javascript JS特定结束日期计算器,javascript,date,Javascript,Date,如果我的起始日期是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

如果我的起始日期是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日期=新日期(2017年1月30日); 1.获取此日期的当前日期。(十) 2.如果本月x<天,则添加1个月至日期 2.1在相同的if中,如果修改日期 我的JSFIDLE在这里: Idk语法有什么问题,但它给了我一个。getDate()不是函数错误,可能不是唯一的问题


另外,我知道这个主题是重复的,我花了10分钟来搜索相同的问题,但我找到了如何设置月的最后一天,但这里我需要更多的内容。

您可以尝试以下内容:

逻辑:
  • 检查通过的日期是否为当月的最后一天?
  • 如果是,您将需要添加1到1个月。这是因为,通过创建一个日期作为下个月的第一天,然后减去1,可以得到月的最后一天
  • 现在初始化一个临时变量,它将保存一天的值。默认情况下,将其设置为0
  • 如果月份相同,则将此temp变量设置为已通过日期的日期。否则就让它为0
  • 现在您拥有了创建新日期的所有参数。归还它。注意,更新相同的日期变量将覆盖原始值。因此,尽量避免对其进行任何操纵
功能添加月份(日期,月份){
var d=0;
var next=新日期(Date.getFullYear(),Date.getMonth(),Date.getDate()+1);
如果(下一个.getMonth()==日期.getMonth()){
d=date.getDate()
}
否则{
月份++
}
//在实际代码中使用以下行。
//返回新日期(Date.getFullYear(),Date.getMonth()+月份,d)
//这一行只是为了演示。
返回新日期(Date.getFullYear(),Date.getMonth()+months,d).toDateString();
}
控制台日志(添加月份(新日期(2017,0,31,1));
控制台日志(添加月份(新日期(2017,0,31,3));
控制台日志(添加月份(新日期(2017,0,15,3));
控制台日志(添加个月(新日期(2016年11月31日)1);

控制台日志(添加个月(新日期(2016,11,11,1))试试这个:
var endDate=new Date(startDate.getFullYear(),startDate.getMonth()+2,0)