js判断一年中的第几个星期属于这一年的哪一月

1.获取当年共有多少天

function getDaysInYear(year) {
	// 判断是否是闰年
	if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {
		// 如果是闰年,返回366天
		return 366;
	} else {
		// 如果不是闰年,返回365天
		return 365;
	}
}

2.看下1月1号是星期几

function getDayOfYear(year) {
	// 创建一个Date对象,设置为指定年份的1月1日
	const date = new Date(year, 0, 1);
	// 使用getDay()方法获取星期几,结果是一个0-6的数字,代表星期日到星期六
	return date.getDay();
}

3.判断每一天所在的星期

let months = {
	"365": [31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365],
	"366": [31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366]
};
let cacheMap = {};
//一年中每一天所在的星期
function getWeekMap(year) {
	if (cacheMap[year]) {
		return cacheMap[year];
	}

	let map = {};
	let weekDay = getDayOfYear(year);
	let days = getDaysInYear(year);
	let day = 1;
	let week = 1;
	let month = 0;
	let monthOfDays = months[days];
	let date = 1;

	while (day <= days) {
		if (day > monthOfDays[month]) {
			month++;
			date = 1;
		}
		if (map[week]) {
			if (map[week][month + 1]) {
				map[week][month + 1].push(date);
			} else {
				map[week][month + 1] = [date];
			}
		} else {
			map[week] = {
				[month + 1]: [date]
			}
		}
		day++;
		date++;
		weekDay++;
		if (weekDay > 6) {
			weekDay = 0;
			week++;
		}
	}
	cacheMap[year] = map;
	return map;
}
  1. 获取年和第几周
function getYearAndMonth(str) {
	var numbers = str.match(/\d+/g);
	return numbers;
}
console.log(getYearAndMonth('2024年12周'));//['2024', '12']

5.传入指定年获取每一个星期所在的月份

let map = getWeekMap(2024);
let res = map[12];//指定星期,第12个星期
console.log(res);
/**
key:3代表月份,
value: [17,18, 19,20,21, 22, 23]代表日期,
代表3月17号到3月23号
res = {
    "3": [17,18, 19,20,21, 22, 23]
}
*/
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值