基于elementui月历组件实现自定义格式,获取插件显示的第一天和最后一天

为了实现自定义 需要给后端传递起始日期 

获取起始日期(基于业务 写的公共的方法)

 /**
         * 员工日报 日历组件 按周显示日期 获取起始日期
         * */
         Vue.prototype.$findPreviousMonday = function (date) {
            let startDate = ''
            // 确保传入的date是本月的第一天  
            let firstDayOfMonth = new Date(date.getFullYear(), date.getMonth(), 1);
            let dayOfWeek = firstDayOfMonth.getDay();
            if (dayOfWeek == 0) {
                // 周日设置为零会导致当当月的1号 所在周的起始日期 计算错误
                dayOfWeek = 7
            }
            // 如果1号是礼拜一,则不需要找,但这里我们假设它不是  
            if (dayOfWeek !== 1) {
                // 从本月1号开始往前数,直到找到礼拜一  
                let previousMonday = new Date(firstDayOfMonth);
                previousMonday.setDate(previousMonday.getDate() - dayOfWeek + 1); // 调整为上一个星期一  


                // 打印结果,注意这里我们不需要检查它是否在上个月,因为从1号往前数肯定在上个月  
                startDate = formatDate(previousMonday)
            } else if (dayOfWeek == 1) {
                // 如果是礼拜一的时候
                let previousMonday = new Date(firstDayOfMonth);
                startDate = this.$dateformat(previousMonday, 'yyyy-mm-dd')
            }

            // 格式化日期函数  
            function formatDate(date) {
                let yyyy = date.getFullYear();
                let MM = ('0' + (date.getMonth() + 1)).slice(-2);
                let dd = ('0' + date.getDate()).slice(-2);
                return `${yyyy}-${MM}-${dd}`;
            }
            return startDate;
        }

获取 月份组件最后一日

 /**
         * 员工日报 日历组件 按周显示日期 获取 月份最后一日
         * */
         Vue.prototype.$getLastDayOfMonth = function (today) {
            let nextMonth = new Date(today.getFullYear(), today.getMonth() + 1, 1);
            let endDate = ''
            // 减去一天得到本月的最后一天  
            let lastDayOfMonth = new Date(nextMonth - 1);

            // 检查最后一天是否是周日  
            if (lastDayOfMonth.getDay() === 0) {
                // 如果是周日,直接打印  
                // console.log(`本月的最后一天是周日: ${lastDayOfMonth.toISOString().split('T')[0]}`);
                endDate = lastDayOfMonth.toISOString().split('T')[0]
            } else {
                // 如果不是周日,找到那一周的周日  
                let sundayOfThatWeek = new Date(lastDayOfMonth.getTime() + ((7 - lastDayOfMonth.getDay()) % 7) * 86400000);
                // 打印找到的周日  
                // console.log(`本月的最后一天不是周日,但所在周的周日是: ${sundayOfThatWeek.toISOString().split('T')[0]}`);
                endDate = sundayOfThatWeek.toISOString().split('T')[0]

            }
            return endDate;
         }

打印出来的结果 如图

传递的数据格式

 mounted() {

        this._type()

        this.removeBtn()

        let now = new Date();

        this.findPreviousMonday(new Date(now.getFullYear(), now.getMonth(), 1)) //

        this.getLastDayOfMonth(now);

}
methods: {
       // 计算日历组件的 起日
        findPreviousMonday(date) {
            this.startDate = this.$findPreviousMonday(date)
            console.log(this.startDate,'起始的日期---?')
        },
        // 计算日历组件的 止日
        getLastDayOfMonth(today) {
            this.endDate = this.$getLastDayOfMonth(today)
            console.log(this.endDate, '最后的周日')
            this._page()
        },
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值