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

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

相关推荐
Cho1yon28 分钟前
【AI Agent 第十五期: AI Agent 从 0 到 1 系统学习大纲】
javascript·人工智能·学习
计算机魔术师31 分钟前
Beren Millidge、John Schulman、Charlie O'Neill 对谈递归自我改进离我们还有多远
前端
MetaLite36 分钟前
Java 时间处理的两个坑:单位误判,半秒算成一秒
java·开发语言·前端
hiahiahia12342 分钟前
SSE 到底是什么?
前端·人工智能
Bigger1 小时前
我把苹果发布会里的折叠屏,真的用网页做出来了
前端·ai编程·交互设计
钱栈up1 小时前
qoder CLI 1.0.45 本地小说生成工作流搭建:Feature Gate 配置与长文本断连排查从死锁到全流程跑通:Python德州扑克项目的优化
java·前端·数据库
hiahiahia1232 小时前
为什么 Structured Output 会变成 Agent 的基础设施?
前端·人工智能
qiuziqiqi2 小时前
cf前端直接上传
前端
杨运交2 小时前
[070][Web模块]Spring MVC TOTP 二次认证拦截器:设计与源码深度解析
前端·spring·mvc
学逆向的2 小时前
inilne HOOK
前端·网络安全·hook