js根据给定日期获取月份的第几周

参考网上很多方法修复了一些bug,例如有些方法当日期为2019-09-01或者2019-04-01这种特殊日期时不能得到正确的结果,话不多说,直接上代码:

function getWeekByDate(str){

str = Date.parse(str);

let date = new Date(str);

    let month = date.getMonth() + 1;

    let year = date.getFullYear();

    let dateN=new Date(str);

//月份第一天

    dateN=new Date(dateN.setDate(1));

    let w1=dateN.getDay();

    // 将字符串转为标准时间格式

    let w = date.getDay();//周几

    if(w===0&&w1!=0){//当月第一天不是周天,当前日期是周天

    w=7;

    }

    let week = Math.ceil((date.getDate() + 6 - w) / 7);

    if(w1!=1)//当月第一天不是周一

    week = Math.ceil((date.getDate() + 6 - w) / 7) - 1;

    var cNum = ["零","一","二","三","四","五","六","七","八","九"];

    if (week === 0) {//第0周归于上月的最后一周

        month = date.getMonth();

    if(month===0){//跨年

        month=12;

        year=year-1;

        }

        let dateLast = new Date(date);

        let dayLast = new Date(year, month, 0).getDate();

        let timestamp = new Date(year, month - 1, dayLast);

        w = new Date(timestamp).getDay();//周几

        if (w === 0) {

            w = 7;

        }

        week = Math.ceil((timestamp.getDate() + 6 - w) / 7) - 1;

    }

    week=cNum[week];

    let time = year+"年"+month + "月第" + week + "周";

console.log(time);

}

参考博文:js获取当前日期是本月第几周,月初如果不足一周归于上月最后一周 - 简书

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容