从网上百度了半天,最后被自己蠢哭了,使用JS自带的方法解决了,so easy。。。
var date=new Date(begdate.replace(/-/g,"/"));
var timelimit=null; //要加的月个数
//原来采用此方法,在2月会出错,虽然是加的月个数,但是实际是加的天数,例2017-12-31 加2个月,变成了2018-03-03
//var month = date.getMonth();
//date.setMonth(month+parseInt(timelimit));
//结束日期=开始日期+期限date.addMonths(parseInt(timelimit));
alert(date.getFullYear()+"-"+(date.getMonth()+1)+"-"+date.getDate()); //因为原有会减一,所以此处要加一
------------------------------------我是一条分隔线----------------------------------------------------------------
原有的写法在测试时发现,当为2018-2-28时,加一个月应该为2018-3-31,但上述得到的是2018-3-28
改进后:
var oldDate=new Date(begdate.replace(/-/g,"/")); //未加之前的日期
var date=new Date(begdate.replace(/-/g,"/"));
//预计结束日期=开始日期+期限
date.addMonths(parseInt(timelimit));
if(oldDate.getDate()==oldDate.getDaysInMonth()){ //月末,getDaysInMonth()获取该月的最后一天
alert("tinvest_contract-prestopdate").setValue(date.getFullYear()+"-"+(date.getMonth()+1)+"-"+date.getDaysInMonth());
}else{
alert("tinvest_contract-prestopdate").setValue(date.getFullYear()+"-"+(date.getMonth()+1)+"-"+date.getDate());
}