计算每月有几周,并且返回每周的具体日期(按照实际日历)

 getWeekData(year, month) { //传入  年  月  获取当月有几周 以及日期 
      var new_year = year;    //取当前的年份
      var new_month = month++;//取下一个月的第一天,方便计算(最后一天不固定)
      if(new_month<10){ new_month = '0' + new_month }
      var weekDay = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"];
      if (new_month > 12) {
          new_month -= 12;        //月份减
          new_year++;            //年份增
      }
      var first_date = new Date(new_year, new_month, 1);                //取当年当月中的第一天-时间格式
      var last_Data = (new Date(first_date.getTime() - 1000 * 60 * 60 * 24)).getDate() //获取当月最后一天日期
      //当月第一天是周几
      var firstzhouji = new Date(new_year + '/' + new_month + '/' + 1).getDay() == 0 ? '星期天' : weekDay[new Date(new_year + '/' + new_month + '/' + 1).getDay() - 1]
      //当月最后一天是周几
      var lastzhouji = new Date(new_year + '/' + new_month + '/' + last_Data).getDay() == 0 ? '星期天' : weekDay[new Date(new_year + '/' + new_month + '/' + last_Data).getDay() - 1]
      var firsttime = '' //第一周有几天
      if (firstzhouji == '星期一') { firsttime = 7 }
      if (firstzhouji == '星期二') { firsttime = 6 }
      if (firstzhouji == '星期三') { firsttime = 5 }
      if (firstzhouji == '星期四') { firsttime = 4 }
      if (firstzhouji == '星期五') { firsttime = 3 }
      if (firstzhouji == '星期六') { firsttime = 2 }
      if (firstzhouji == '星期天') { firsttime = 1 }
    
      var lasttime = '' //最后一周有几天
      if (lastzhouji == '星期一') { lasttime = 1 }
      if (lastzhouji == '星期二') { lasttime = 2 }
      if (lastzhouji == '星期三') { lasttime = 3 }
      if (lastzhouji == '星期四') { lasttime = 4 }
      if (lastzhouji == '星期五') { lasttime = 5 }
      if (lastzhouji == '星期六') { lasttime = 6 }
      if (lastzhouji == '星期天') { lasttime = 7 }
    
      // 前后两周  加上 剩余周数  得出总周数
      var contime = 2 + (last_Data - lasttime - firsttime) / 7
    
      //得出每周对应的日期
      var zhouArry = []
    
      for (var i = 1; i <= contime; i++) {
          var strTime = ''
          var lastTime = ''
          if (i == 1) {
              strTime = year + '-' + new_month + '-' + '01'
              let aa = 1 + firsttime - 1
              if(aa<10){
                  aa='0'+aa
              }
              lastTime = year + '-' + new_month + '-' + aa
          } else if (i == contime) {
              let bb = last_Data - lasttime + 1
              if(bb<10){
                  bb='0'+bb
              }
              strTime = year + '-' + new_month + '-' + bb
              lastTime = year + '-' + new_month + '-' + (last_Data<10 ? ('0'+last_Data) : last_Data )
          } else {
              strTime = addDate(zhouArry[zhouArry.length - 1].endTime, 1)
              lastTime = addDate(zhouArry[zhouArry.length - 1].endTime, 7)
          }
  
          zhouArry.push({
              weeknum: i,
              beginTime: strTime,
              endTime: lastTime,
          })
    
      //日期增加 接受两个参数, 传入的时间,传入时间增加的天数
      function addDate(date, days) {
          if (days == undefined || days == '') {
              days = 1;
          }             
          var date = new Date(date);
          date.setDate(date.getDate() + days);
          var month = date.getMonth() + 1;
          if(month<10){ month = '0' + month;}
          var day = date.getDate();    
          if(day<10){ day = '0' + day;}        
          return date.getFullYear() + '-' + month + '-' + day;
      }      
      }
      return zhouArry
    },
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值