利用基姆拉尔森计算公式
W= (d+2m+3(m+1)/5+y+y/4-y/100+y/400+1) mod 7
其中,W的取值范围是0~6,其中0代表星期日,1~6分别代表星期一到星期六。注意在运算时要把1月和2月看为是上一年的13月和14月代入计算!其模板代码如下
C语言代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| 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; }
|