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();
    },

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

相关推荐
糕冷小美n12 小时前
elementuivue2表格不覆盖整个表格添加固定属性
前端·javascript·elementui
小哥不太逍遥12 小时前
Technical Report 2024
java·服务器·前端
沐墨染12 小时前
黑词分析与可疑对话挖掘组件的设计与实现
前端·elementui·数据挖掘·数据分析·vue·visual studio code
anOnion12 小时前
构建无障碍组件之Disclosure Pattern
前端·html·交互设计
threerocks12 小时前
前端将死,Agent 永生
前端·人工智能·ai编程
问道飞鱼13 小时前
【前端知识】Vite用法从入门到实战
前端·vite·项目构建
爱上妖精的尾巴13 小时前
8-10 WPS JSA 正则表达式:贪婪匹配
服务器·前端·javascript·正则表达式·wps·jsa
shadow fish14 小时前
react学习记录(三)
javascript·学习·react.js
小疙瘩15 小时前
element-ui 中 el-upload 多文件一次性上传的实现
javascript·vue.js·ui
Aliex_git15 小时前
浏览器 API 兼容性解决方案
前端·笔记·学习