获取今年第几周
// 页面初始时获取当前是本年第几周
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"));
获取周开始结束也是在其他博主那里看到的,是好久之前的了如有知道请帮忙加个连接,谢谢!