参考文章:
    https://acuity.blog.csdn.net/article/details/78992590

    1.写在前面
    在此之前,一直用库函数获取星期,或者直接从硬件RTC中读取星期。今天,恰巧需用到,根据年、月、日换算出星期。然后才发现有如此好用的算法——基姆拉尔森计算公式(Kim larsson calculation formula)。
    2.基姆拉尔森算法C语言实现
    C语言、平台Linux、编译器g++
    用gcc编译出错,为什么?
    基姆拉尔森算法获取星期 - 图1

    1. #include "stdio.h"
    2. void caculat_week_day(int y,int m, int d)
    3. {
    4. int week;
    5. if(m==1||m==2)
    6. {
    7. m+=12;
    8. y--;
    9. }
    10. week=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
    11. switch(week)
    12. {
    13. case 0: printf("Monday\n"); break;
    14. case 1: printf("Tuesday\n"); break;
    15. case 2: printf("Wednesday\n"); break;
    16. case 3: printf("Thursday\n"); break;
    17. case 4: printf("Friday\n"); break;
    18. case 5: printf("Saturday\n"); break;
    19. case 6: printf("Sunday\n"); break;
    20. default:break;
    21. }
    22. }
    23. int main(void)
    24. {
    25. int year=0,month=0,day=0,temp = 27;//ESC->27
    26. printf("Please input date:(e.g.:2018,1,7)\n");
    27. scanf("%d,%d,%d",&year,&month,&day);
    28. caculat_week_day(year,month,day);
    29. return 0;
    30. }

    运行:
    基姆拉尔森算法获取星期 - 图2

    基姆拉尔森算法获取星期 - 图3
    3.参考
    https://baike.baidu.com/item/基姆拉尔森计算公式/713396?fr=aladdin