ElementUI 周组件展示成月的第几周

ElementUI 周组件展示成月的第几周

组件展示

复制代码
 <el-date-picker unlink-panels :clearable="false"  @change="weekChange"
                 :editable="false" :type="dateType"
                 :value-format="valueFormat"   :format="format"
                 v-if="this.periodFlag === '01'"
                 v-model="queryForm.statCycle"
                 placeholder="请选择" class="width-100"
                 size="mini">
 </el-date-picker>

修改format

复制代码
 this.format = this.getWeekInMonth(this.queryForm.statCycle);
 // 根据日期判断是月的第几周
     getWeekInMonth(t) {
      if (t == undefined || t == '' || t == null) {
        t = new Date();
      } else {
        var _t = new Date();
        _t.setYear(t.getFullYear());
        _t.setMonth(t.getMonth());
        _t.setDate(t.getDate());

        var date = _t.getDate(); //给定的日期是几号

        _t.setDate(1);
        var d = _t.getDay(); //1. 得到当前的1号是星期几。
      
        var fisrtWeekend = d;
        var weekend2 = d;
        if (d == 0) {
          weekend2 = 1;
          fisrtWeekend = 7;
          //1号就是星期天
        } else {
          fisrtWeekend = 7 - d + 7; //第一周的周未是几号
          weekend2 = 7 - d + 1;
        }
        var str = ''
        if (date <= fisrtWeekend) {
          str = '';
          if(date < weekend2){//算上个月的最后一天
            let y = _t.getFullYear();
            let m = _t.getMonth();
            if(m == 0){
              m = 12;
              y = y - 1
            }
            let lastD = this.getLastDayOfMonth(y,m);
            let lastMd = lastD.getDate();
            let firstMd = this.getLastMonthDay(lastD);
            // str = 'yyyy年'+ 
            str = y+ '年'+ m +'月第' +( 1+ Math.ceil((lastMd - firstMd) / 7))+'周'
          }else{
            str = 'yyyy年M月第1周'
          }
         
          return str;
        } else {
          let y = _t.getFullYear();
            let m = _t.getMonth();
          str = y+ '年'+ (m+1) +'月第'+(1 + Math.ceil((date - fisrtWeekend) / 7))+'周'
          return str;
        }
      }
    },
    getLastMonthDay(t){
      if (t == undefined || t == '' || t == null) {
        t = new Date();
      } else {
        var _t = new Date();
        _t.setYear(t.getFullYear());
        _t.setMonth(t.getMonth());
        _t.setDate(t.getDate());

        // var date = _t.getDate(); //给定的日期是几号

        _t.setDate(1);
        var d = _t.getDay(); //1. 得到当前的1号是星期几。

        var fisrtWeekend = d;
        if (d == 0) {
          fisrtWeekend = 1;
          //1号就是星期天
        } else {
          fisrtWeekend = 7 - d + 1; //第一周的周未是几号
        }
        return fisrtWeekend;
        // if (date <= fisrtWeekend) {
        //   return 1;
        // } else {
        //   return 1 + Math.ceil((date - fisrtWeekend) / 7);
        // }
      
        
      }
    },
    getLastDayOfMonth(year, month) {
  // 获取指定月份的下一个月的第一天
      const nextMonth = new Date(year, month, 1);
      // 将下一个月的第一天减去一天,即为指定月份的最后一天
      const lastDay = new Date(nextMonth - 86400000);
      return lastDay;//.getDate();
    },

自己项目记录,希望能够找到更简单的方法。

相关推荐
zwjapple21 分钟前
docker-compose一键部署全栈项目。springboot后端,react前端
前端·spring boot·docker
像风一样自由20203 小时前
HTML与JavaScript:构建动态交互式Web页面的基石
前端·javascript·html
aiprtem3 小时前
基于Flutter的web登录设计
前端·flutter
浪裡遊3 小时前
React Hooks全面解析:从基础到高级的实用指南
开发语言·前端·javascript·react.js·node.js·ecmascript·php
why技术3 小时前
Stack Overflow,轰然倒下!
前端·人工智能·后端
GISer_Jing3 小时前
0704-0706上海,又聚上了
前端·新浪微博
止观止4 小时前
深入探索 pnpm:高效磁盘利用与灵活的包管理解决方案
前端·pnpm·前端工程化·包管理器
whale fall4 小时前
npm install安装的node_modules是什么
前端·npm·node.js
烛阴4 小时前
简单入门Python装饰器
前端·python
袁煦丞5 小时前
数据库设计神器DrawDB:cpolar内网穿透实验室第595个成功挑战
前端·程序员·远程工作