功能要求:
现在需要做一个租期计算功能,确定好起租日期和租期(月份),求截止日期。如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 },