C语言根据年-月-日-判断星期几
程序员文章站
2024-01-01 19:30:04
...
利用基姆拉尔森计算公式
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7
在公式中d表示日期中的日数,m表示月份数,y表示年数。
注意:在公式中有个与其他公式不同的地方:
把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。以公元元年为参考,公元元年1月1日为星期一。
效果如图:
代码如下:
#include <stdio.h>
const char *WeekYearday(int years, int months, int days)
{
int WeekDay=-1;
if(1==months || 2==months)
{
months+=12;
years--;
}
WeekDay=(days+1+2*months+3*(months+1)/5+years+years/4-years/100+years/400)%7;
switch(WeekDay)
{
case 0 :
return "星期天[Sunday]";
break;
case 1 :
return "星期一[Monday]";
break;
case 2 :
return "星期二[Tuesday]";
break;
case 3 :
return "星期三[Wednesday]";
break;
case 4 :
return "星期四[Thursday]";
break;
case 5 :
return "星期五[Friday]";
break;
case 6 :
return "星期六[Saturday]";
break;
default :
return NULL;
break;
}
return NULL;
}
int main()
{
int year,month,day;
char ch='1';
while(ch!='\033')
{
printf("\n请输入日期:\n格式为:1900,1,1\n");
scanf("%d,%d,%d",&year,&month,&day);
const char *p=WeekYearday(year,month,day);
printf("今天是:%s\n",p);
ch=getchar();
printf("\n");
}
return 0;
}