Jscript获取一段时间内的全部周一至周日的日期

之前做一段功能使用echarts图表有一个按周的统计功能。在这里插入图片描述

获取一段时间的按天的按月的都相对比较简单,按周的稍微有点难度;
按天的封装

  // 获取两个日期之间所有的日期(YYYY-MM-DD)
  //start,开始时间
  //end,结束时间
  // result 时间差的日期 array
  export function getdateTimePhase(start,end){
    var result = [];
    if(start === end){
      result = start;
      return result;
    }
    var beginDay = start.split("-");
    var endDay = end.split("-");
    var diffDay = new Date();
    var dateList = new Array;
    var i = 0;
    diffDay.setDate(beginDay[2]);
    diffDay.setMonth(beginDay[1]-1);
    diffDay.setFullYear(beginDay[0]);
    result.push(start);
    while(i == 0){
        var countDay = diffDay.getTime() + 24 * 60 * 60 * 1000;
        diffDay.setTime(countDay);
        dateList[2] = diffDay.getDate();
        dateList[1] = diffDay.getMonth() + 1;
        dateList[0] = diffDay.getFullYear();
        if(String(dateList[1]).length == 1){dateList[1] = "0"+dateList[1]};
        if(String(dateList[2]).length == 1){dateList[2] = "0"+dateList[2]};
        result.push(dateList[0]+"-"+dateList[1]+"-"+dateList[2]);
        if(dateList[0] == endDay[0] && dateList[1] == endDay[1] && dateList[2] == endDay[2]){ i = 1;
        }
    };
    return result;

  }

按月:

//start 开始时间  格式(yyyy-MM-dd)
//end 结束时间  格式(yyyy-MM-dd)
//retrun [array]
// 获取一段时间内的月份
export function getMonthBetween(start,end){
    var result = [];  
    var s = start.split("-");  
    var e = end.split("-"); 
    var min = new Date();  
    var max = new Date();
    min.setFullYear(s[0],s[1]);  
    max.setFullYear(e[0],e[1]);  
    var curr = min;   
    while(curr <= max){ 
        var month = curr.getMonth(); 
        var str=curr.getFullYear()+"-"+(month);
        var s=curr.getFullYear()+"-0";
        if(str==s){
            str=curr.getFullYear()+"-12";            
        }
        result.push(str);  
        curr.setMonth(month+1);
    }
    var arr = []
    var newArr = []
    for(var i=0;i<result.length;i++){
    	arr.push(result[i].split('-'))
    }
    for(var i=0;i<arr.length;i++){
    	if (arr[i][1]==="12") {
    		arr[i][0] = arr[i][0]-1
    	}
    }
    for(var i = 0;i<arr.length;i++){
    	newArr.push(arr[i][0]+'-'+arr[i][1])
    }
    
    for(let i=0;i<newArr.length;i++){
      if(newArr[i].length === 6){
        newArr[i]= newArr[i].slice(0, 5) + '0' + newArr[i].slice(5);
      }

    }
    return newArr;
    
 };

按周:
因为按周的有点例外,开始时间需要处理一下,必须是周日的时间日期

  //获取一段时间的每周(按周)
  // time 开始时间(已经过处理)
  //end 结束时间
  // retrun Array;['2019-04-22~2019-04-28','2019-04-29~2019-05-05']
  export function  getWeek(time,end){
    let begin='';
    begin+=time.getFullYear()+'-';          // 获取年份。
    begin+=(time.getMonth()+1)+"-";         // 获取月份。
    begin+= time.getDate();  
          Date.prototype.format=function (){
                let yyyy=this.getFullYear();          // 获取年份。
                let MM=(this.getMonth()+1); 
                let dd = this.getDate();      
                if(MM<10){
                    MM ='0'+MM
                }   
              if(dd<10){
                    dd ='0'+dd
                }      
              let  s=yyyy+'-'+MM+'-'+dd;
                return(s); 
              }
              var dateAllArr = new Array();
              var ab = begin.split("-");
              var ae = end.split("-");
              var db = new Date();
              db.setUTCFullYear(ab[0], ab[1]-1, ab[2]);
              var de = new Date();
              de.setUTCFullYear(ae[0], ae[1]-1, ae[2]);
              var unixDb=db.getTime();
              var unixDe=de.getTime();
              for(var k=unixDb;k<=unixDe;){
                // 周一至周日的字符串push
                  dateAllArr.push((new Date(parseInt(k))).format().toString()+'~'+(new Date(parseInt(k+6*24*60*60*1000))).format().toString());
                  k=k+7*24*60*60*1000;
              }
              return dateAllArr;
              
      }

处理的开始时间的函数封装


// 将一个起始日期经过过滤拿到当周的周一返回
// start 起始日期;
export function judgeStart(start){
  let startTime = new Date(start);
  let  oweek =startTime.getDay();

 let mSeconds = startTime.getTime();
  switch(oweek){
      case 0:
      return mSeconds-6*24*60*60*1000;
      break;
      case  1: 
      return mSeconds;
      break;
      case 2:
      return mSeconds-1*24*60*60*1000;
      break;
      case 3:
      return mSeconds-2*24*60*60*1000;
      break;
      case 4: 
      return mSeconds-3*24*60*60*1000;
      break;
      case 5:
      return mSeconds-4*24*60*60*1000;
      break;
      case 6: 
      return mSeconds-5*24*60*60*1000;
      break;
      
  }
}

使用demo

import {getWeekAll,judgeStart} from '@/utils/getTime'
   let begin =new Date(judgeStart(this.quantum[0]));
      let getWeekList =  getWeek(begin,end)
      //getWeekList  得到周一到周日的数组格式
在这里插入代码片

一些格式大家参考一下,根据自身需求更改。
写的不好,有大神看到觉得哪里需要改善的欢迎附上代码大家一起学习进步!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值