已知某年某月某日是星期几,输入一个年月日(1980~2030),求得该日为星期几

@TOC,求得该日为星期几。)

<script type="text/javascript">
	// 5. 已知某年某月某日是星期几,输入一个年月日(1980~2030),求得该日为星期几。
	// 2019/3/21  周四              ----》   2011 5 13
/* 	(年+年/4+年/400-年/100-年基数+月基数+日)/7=……余星期几
	
	注:式中分数均取整
	
	年基数,平年1,闰年2,
	
	月基数,1、平年:一月0, 二月3, 三月3, 四月6, 五月1, 六月4,
	
	七月0, 八月3, 九月5, 十月0, 十一月3, 十二月5.
	
	2、闰年:一月0, 二月3, 三月4, 四月0, 五月2, 六月5,
	
	七月0, 八月3, 九月6, 十月1, 十一月4, 十二月6. */
	
console.log(calcWeek(2020,12,10));
console.log(calcWeek(1949,10,1));
	function calcWeek(yy,mm,dd){
		function isLeapYear(y){
			if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) {
				return true;
			} else {
				return false;
			}
		}
		let yyBase,mmBase;
		if(isLeapYear(yy)){
			yyBase = 2;
			switch(mm){
				case 1:
				case 4:
				case 7:
					mmBase = 0;
					break;
				case 2:
				case 8:
					mmBase = 3;
					break;
				case 3:
				case 11:
					mmBase = 4;
					break;
				case 5:
					mmBase = 2;
					break;
				case 6:
					mmBase = 5;
					break;
				case 9:
				case 12:
					mmBase = 6;
					break;
				case 10:
					mmBase = 1;
					break;
			}
		}else{
			yyBase = 1;
			switch(mm){
				case 1:
				case 7:
				case 10:
					mmBase = 0;
					break;
				case 2:
				case 3:
				case 8:
				case 11:
					mmBase = 3;
					break;
				case 4:
					mmBase = 6;
					break;
				case 5:
					mmBase = 1;
					break;
				case 6:
					mmBase = 4;
					break;
				case 9:
				case 12:
					mmBase = 5;
					break;
			}
		}
		let week = (yy + parseInt(yy/4) + parseInt(yy/400) - parseInt(yy/100) - yyBase + mmBase + dd)%7;
		return week;
	}
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值