第n年的第n周,获取开始和结束时间

//日期加减法  date参数为计算开始的日期,days为需要加的天数
//格式:addDate('2017-1-11',20)
function addDate(date, days) {
    var d = new Date(date);
    d.setDate(d.getDate() + days);
    var m = d.getMonth() + 1;

    return (
            d.getFullYear() +
            "-" +
            (m > 9 ? m : "0" + m) +
            "-" +
            (d.getDate() > 9 ? d.getDate() : "0" + d.getDate())
    );
}

// 第n年的第n周,获取开始和结束时间 (星期一为一周的开始)
function week_date(weekstr) {
    let year = weekstr.split("-")[0];
    let weekNo = weekstr.split("-")[1] * 1 + 1;
    // 此年1号是星期几
    console.log('调用时传的',year,weekNo);
    let oneday = new Date(year + "-01-01").getDay(); //0-6
    // console.log(oneday);
    // 方便计算,当为星期天时为7
    if (oneday == 0) {
            oneday = 7;
    }

    let one_fistday;
    let one_lastday;
    // 如果1号刚好是星期一
    if (oneday == 1) {
            one_fistday = year + "-01-01";
            one_lastday = year + "-01-07";
    } else {
            let jj = 8 - oneday;
            one_fistday =
                    year -
                    1 +
                    "-12-" +
                    (31 - oneday + 2 > 9 ? 31 - oneday + 2 : "0" + (31 - oneday + 2));
            one_lastday = year + "-01-" + (jj > 9 ? jj : "0" + jj);
    }

    let fistday;
    let lastday;
    // 如果刚好是第一周
    if (weekNo == 1) {
            fistday = one_fistday;
            lastday = one_lastday;
    } else {
            fistday = addDate(one_lastday, (weekNo - 2) * 7 + 1);
            lastday = addDate(one_lastday, (weekNo - 1) * 7);
    }
    console.log(fistday, lastday,'week_date');
    return [fistday, lastday];
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容