js,vue, 获取指定时间的前、后多少天的日期

588 阅读1分钟

需求: 给定一个日期,获取该日期前后 7天 的日期

// 获取当前日期前后多少天的日期,之前多少天传正数,后面多少天传负数,今天传0,

// num为传入的数字, time为传入的指定日期,如果time不传,则默认为当前时间

 getBeforeDate(num, time) { 
       let n = num; 
       let d = '';
       if(time) {  
          d = new Date(time);
       } else { 
          d = new Date();
       }            
       let year = d.getFullYear(); 
       let mon = d.getMonth() + 1; 
       let day = d.getDate();
          if(day <= n) {  
              if(mon > 1) {  
                  mon = mon - 1;
              } else {  
                  year = year - 1;
                  mon = 12;
               } 
           }            
        d.setDate(d.getDate() - n);
        year = d.getFullYear();
        mon = d.getMonth() + 1;
        day = d.getDate(); 
        let s = year + "-" + (mon < 10 ? ('0' + mon) : mon) + "-" + (day < 10 ? ('0' + day) : day);  
          return s;     
   }

当循环输入0 ~ 7, -6 ~0 ,并且 time 传入 ‘2019-10-31’, arr 、arr2 会输出如下

let arr = []; 
for(let i=0; i<7; i++) {
    arr.push(this.getBeforeDate(i, '2019-10-31'))
}        
let arr2 = [];
for(let i=-6; i<1; i++) {
     arr2.push(this.getBeforeDate(i, '2019-10-31'))
}         
console.log(arr)
console.log(arr2)