一周后,两周、一个月、两个月、三个月、半年后、一年后日期的计算

时间返回格式方法:

function dateFormat(fmt, date) {
    let ret;
    const opt = {
        "Y+": date.getFullYear().toString(),        // 年
        "m+": (date.getMonth() + 1).toString(),     // 月
        "d+": date.getDate().toString(),            // 日
        "H+": date.getHours().toString(),           // 时
        "M+": date.getMinutes().toString(),         // 分
        "S+": date.getSeconds().toString()          // 秒
        // 有其他格式化字符需求可以继续添加,必须转化成字符串
    };
    for (let k in opt) {
        ret = new RegExp("(" + k + ")").exec(fmt);
        if (ret) {
            fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
        };
    };
    return fmt;
}
startDate=dateFormat('Y-mm-dd',new Date())
一周后、两周后日期比较简单,用天来计算:
function nextDay(d){
      const end = new Date();
      end.setTime(new Date(startDate).getTime() + 3600 * 1000 * 24 * d);
      return dateFormat('Y-mm-dd',end);
},
一周后:nextDay(6)
两周后:nextDay(13)
 
 
一个月后、两个月后、三个月后、半年后日期,用月来计算:
 
function nextMonth(d){  
        let yesterday_milliseconds=new Date(startDate).getTime()-1000*60*60*24;     
        let yesterday = new Date();     
            yesterday.setTime(yesterday_milliseconds);
        
        let yy = yesterday.getFullYear();  
        let mm = yesterday.getMonth();
        let dd = yesterday.getDate();  
        console.log(mm+d,'mm+d')
        let dt = new Date(yy, mm+d, dd);        
        return dateFormat('Y-mm-dd',dt);
}
这样算会导致一个问题,就是比如说2021年2月份只有28天,那么1月1号开始,一个月后日期是1月31号,两个月后就是3月3号了 
于是改为先算月,再减去一天:
nextMonth(d){  
       let cur=new Date(_this.startDate);
       let yy = cur.getFullYear();  
       let mm = cur.getMonth();
       let dd = cur.getDate();  
       let dt = new Date(yy, mm+d, dd).getTime()-1000*60*60*24;  
       let yesterday = new Date();
            yesterday.setTime(dt);     
       return dateFormat('Y-mm-dd',yesterday);  
}
这样就不会因为2月份的时间造成日期上的误差了
一个月后:nextMonth(1),两个月后:nextMonth(2),三个月后:nextMonth(3),半年后:nextMonth(6)...
 
一年后日期:
nextYear(date){    
  var yesterday_milliseconds=new Date(date).getTime()-1000*60*60*24;     
  var yesterday = new Date();     
  yesterday.setTime(yesterday_milliseconds);
            
  var strYear = yesterday.getFullYear()+1;  
  var strDay = yesterday.getDate();  
  var strMonth = yesterday.getMonth()+1;
  if(strMonth<10){  
         strMonth="0"+strMonth;  
      }  
      return strYear+"-"+strMonth+"-"+strDay;
},
nextYear(startDate)
 
posted @ 2020-12-30 19:51  crystal2018  阅读(1355)  评论(0编辑  收藏  举报