js 获取当前是这个年份的第几周+获取这周的开始和结束日期

js获取今年第几周和获取周的开始和结束日期

获取今年第几周

// 页面初始时获取当前是本年第几周
function getYearWeek(a, b, c) {
     //a为年 b为月 c为日
     /*  
         date1是当前日期  
         date2是当年第一天  
         d是当前日期是今年第多少天  
         用d + 当前年的第一天的周差距的和在除以7就是本年第几周  
     */
     var date1 = new Date(a, parseInt(b) - 1, c),
         date2 = new Date(a, 0, 1),
         d = Math.round((date1.valueOf() - date2.valueOf()) / 86400000);
     return Math.ceil((d + (date2.getDay() + 1 - 1)) / 7);
 }

 // 页面初始需要的周和月的数据
 const date = new Date();
 // 获取当前第几周
 let week =
     date.getFullYear() +
     "-" +
     getYearWeek(
         date.getFullYear(),
         Number(date.getMonth()) + 1,
         date.getDate()
     );
 //获取周的开始结束日期
 let wStartEnd = week_date(week);

周的开始和结束日期

// 第n年的第n周,获取开始和结束时间 (星期一为一周的开始)
function week_date(weekstr) {
    let year = weekstr.split("-")[0];
    let weekNo = weekstr.split("-")[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);
    return [fistday, lastday];
}

//日期加减法  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())
    );
}

console.log("查看", week_date("2022-11"));

获取周开始结束也是在其他博主那里看到的,是好久之前的了如有知道请帮忙加个连接,谢谢!

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值