js 计算每月有几周

263 阅读1分钟

在项目开发中遇到的奇葩需求记录,需求为可以按月份查询数据也可以按当前选中月份的周查询数据。以下就是实现计算每月有几周的逻辑

    let year = 2020;
    let month = 8;
    let weekList = [];

    function getMonthWeek(y, m, d) {
        let date = new Date(y, m - 1, d);
        let funD = date.getDate();
        let weekendCount = 0;
        for (let i = 0; i < funD; i++) {
            date.setDate(i + 1);
            if (date.getDay() === 0) {
                weekendCount++
            }
            if(i === (funD-1) && date.getDay() !== 0){
                weekendCount += 1
            }
        }
        return weekendCount;
    }

        let last = new Date(year, month, 0);
        let y = last.getFullYear();
        let m = last.getMonth() + 1;
        let d = last.getDate();
        let num = parseInt(getMonthWeek(y, m, d));
        for (let i = 0; i < num; i++) {
            weekList.push(`第${i + 1}周`)
        }
        console.log(weekList)