@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>