C语言根据年-月-日-判断星期几

利用基姆拉尔森计算公式

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;
}
发布了136 篇原创文章 · 获赞 198 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/qq_42680327/article/details/103794847