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

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

相关推荐
程序员_三木16 分钟前
Three.js入门-Raycaster鼠标拾取详解与应用
开发语言·javascript·计算机外设·webgl·three.js
顾平安1 小时前
Promise/A+ 规范 - 中文版本
前端
聚名网1 小时前
域名和服务器是什么?域名和服务器是什么关系?
服务器·前端
桃园码工1 小时前
4-Gin HTML 模板渲染 --[Gin 框架入门精讲与实战案例]
前端·html·gin·模板渲染
沈剑心1 小时前
如何在鸿蒙系统上实现「沉浸式」页面?
前端·harmonyos
一棵开花的树,枝芽无限靠近你2 小时前
【PPTist】组件结构设计、主题切换
前端·笔记·学习·编辑器
m0_748237052 小时前
Chrome 关闭自动添加https
前端·chrome
prall2 小时前
实战小技巧:下划线转驼峰篇
前端·typescript
开心工作室_kaic2 小时前
springboot476基于vue篮球联盟管理系统(论文+源码)_kaic
前端·javascript·vue.js
川石教育2 小时前
Vue前端开发-缓存优化
前端·javascript·vue.js·缓存·前端框架·vue·数据缓存