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 = addDate(one_fistday, 7); lastday = addDate(one_lastday, 7); } else {
// 在原文档进行了修改 fistday = addDate(one_lastday, (weekNo - 1) * 7 + 1); lastday = addDate(one_lastday, weekNo * 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("2023-21"));
其中两个标注的地方通过原文进行了修改,参考原文[链接:https://blog.csdn.net/weixin_61079989/article/details/125946238]
标签:几周,Js,日期,let,date,lastday,fistday,oneday From: https://www.cnblogs.com/T8888/p/17422959.html