js动态计算n年,或n月,或n天之后的日期

js动态计算n年或者n月或者n天之后的日期
由于需要动态计算日期并兼容ios手机日期格式返回使用 ‘YYYY/MM/DD’ 的格式,这属于借鉴并自己整理总结的三种方法,可能并不是很完善,希望有更好的方法的小伙伴一起分享一起完善 n年之后的日期

getAfterNYear(year){ //year代表几年this.startDate 代表开始日期 let time = new Date(this.startDate); let y = time.getFullYear()+year; let m = time.getMonth() + 1 let d = time.getDate(); //考虑二月份场景,若N年后的二月份日期大于该年的二月份的最后一天,则取该年二月份最后一天 if(m == '02' || m == 2){ var monthEndDate = new Date(y ,m,0).getDate(); if(parseInt(d) > monthEndDate){//为月底时间 //取两年后的二月份最后一天 d = monthEndDate; } } let date=y + "/" + m + "/" + d return moment(date).format('YYYY/MM/DD HH:mm:ss'); },

n月之后的日期
Month(n) { // n个月后 let time=this.startDate || this.productObj.endDate let startTime = time.replace(/-/g,'/'); let s=startTime.split("/") var yy = parseInt(s[0]); var mm = parseInt(s[1] - 1); var dd = parseInt(s[2]); var dt = new Date(yy, mm, dd); dt.setMonth(dt.getMonth() + n); if ((dt.getFullYear() * 12 + dt.getMonth()) > (yy * 12 + mm + n)) { dt = new Date(dt.getFullYear(), dt.getMonth(), 0); } var year = dt.getFullYear(); var month = dt.getMonth() + 1; var days = dt.getDate(); var dd = year + "-" + month + "-" + days; return moment(dd).format('YYYY/MM/DD HH:mm:ss'); },

n天之后的日期
GetDay(day) { //day代表几年this.startDate 代表开始日期 let time=new Date(this.startDate) time.setDate(time.getDate() + day); //获取Day天后的日期 var y = time.getFullYear(); var m = time.getMonth() + 1; //获取当前月份的日期 var d = time.getDate(); let date=y + "/" + m + "/" + d return moment(date).format('YYYY/MM/DD HH:mm:ss'); },

    推荐阅读