基姆拉尔森计算公式
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7
d表示日期中的日数m表示月份数y表示年数
Sun Mon Tue Wed Thu Fri Sat
0 1 2 3 4 5 6
算法如下:
void CaculateWeekday(int y, int m, int d)
{
int w; //代表是星期几
if (m==1 || m==2)
{ m += 12; y--; }
w = (d+1 + 2*m + 3*(m+1)/5 + y + y/4 - y/100 + y/400)%7;
switch(w)
{
case 0: printf("星期日\n");
break;
case 1: printf("星期一\n");
break;
case 2: printf("星期二\n");
break;
case 3: printf("星期三\n");
break;
case 4: printf("星期四\n");
break;
case 5: printf("星期五\n");
break;
case 6: printf("星期六\n");
break;
}
}
输入:
年 月 日
输出:
星期几