JavaScript的Date直接加month可能造成日期顺延,比如2018-05-31,直接加6个月,因为11月没有31日,就变成2018-12-01了,想和Java一样变成2018-11-30,如果不使用第三方库,要先把日期改成1日,然后再加月份,再设置日期才行。
function addDate1() {
var date = new Date('2018-05-31');
date.setMonth(date.getMonth() + 6);
console.log(date.toLocaleDateString()); // 2018/12/1
}
function addDate2() {
var date = new Date('2018-05-31');
var oldDate = date.getDate();//获取该月有多少日
date.setDate(1);//设置为1日(day)
date.setMonth(date.getMonth() + 6);//设置当前月份(从0开始)
var newDay= new Date(date.getYear(), date.getMonth()+1, 0).getDate();//获取该月有多少日
date.setDate(Math.min(oldDate, newDay));
console.log(date.toLocaleDateString()); // 2018/11/30
}