功能要求:
现在需要做一个租期计算功能,确定好起租日期和租期(月份),求截止日期。如20170809一个月后为20170908,20170131一个月后为20170228
难点:
主要是比如,1月31号租的,那么对应的是2月30号,2月没有30号,只能为28或者29。还要考虑年份跨越。
思路:
利用javascript中Date对象的属性,可以自动解决年份跨越和2月的尾数问题。
解决方法:
a号是对应下n个月的a号减去一天,如果那个月份没有a号,就对应该月份的最后一天。
代码:
getNextMonth(new Date(),1)即可获得当前时间的下个月份
//指定年月的该月份的天数
monthDay: function (year, month) {
month = parseInt(month, 10);
var d = new Date(year, month, 0); //这个是都可以兼容的
var date = new Date(year + "/" + month + "/0") //IE浏览器可以获取天数,谷歌浏览器会返回NaN
return d.getDate();
},//length下n个月的n
getNextMonth: function (date,length) {
let yy = date.getFullYear()
let mm = date.getMonth()
let dd = date.getDate()
let nm= 0//目标月份
nm = mm+length
let nd = 0//目标天数
if(this.monthDay(yy,nm+1)<dd){
nd = this.monthDay(yy,nm+1)
}else{
nd = dd-1
}
date.setDate(1)
date.setMonth(nm)
date.setDate(nd)
return date
},