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日为星期一
程序如下:
/*利用基姆拉尔森计算日期公式 w=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)*/
#include <stdio.h> const char * getWeekdayByYearday(int iY, int iM, int iD) { int iWeekDay = -1; if (1 == iM || 2 == iM) { iM += 12; iY--; } iWeekDay = (iD + 1 + 2 * iM + 3 * (iM + 1) / 5 + iY + iY / 4 - iY / 100 + iY / 400) % 7; switch(iWeekDay) { 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 != '