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

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

相关推荐
前端小巷子7 分钟前
web域名解析
前端·javascript·面试
LaoZhangAI8 分钟前
沉浸式翻译API深度解析:500万用户的翻译神器如何配置[2025完整指南]
前端·后端
然我15 分钟前
链表指针玩不转?从基础到双指针,JS 实战带你破局
前端·数据结构·算法
江城开朗的豌豆15 分钟前
组件封装实战:如何设计灵活又好用的前端组件?
前端·javascript·vue.js
EndingCoder23 分钟前
算法与前端的可访问性
前端·算法·递归·树形结构
brzhang30 分钟前
别再梭哈 Curosr 了!这 AI 神器直接把需求、架构、任务一条龙全干了!
前端·后端·架构
Kagol39 分钟前
TinyEditor v4.0 alpha 版本发布,更强大的表格、更丰富的表情、体验更好的图片/视频/文件上传功能
前端·开源
The_era_achievs_hero43 分钟前
微信131~140
开发语言·javascript·微信
然我1 小时前
路由还能这么玩?从懒加载到路由守卫,手把手带你解锁 React Router 进阶技巧
前端·react.js·面试
良木林2 小时前
JavaScript书写基础和基本数据类型
开发语言·前端·javascript