本帖最后由 taxue0504 于 2013-12-18 14:24 编辑
蔡勒公式
W=[C/4]-2C+y+[y/4]+[26(m+1)/10]+d-1 (其中[ ]为取整符号)
其中,W是所求日期的星期数.如果求得的数大于7,可以减去7的倍数,直到余数小于7为止.c是公元年份的前两位数字,y是已知公元年份的后两位数字;m是月数,d是日数.方括[ ]表示只截取该数的整数部分
基姆拉尔森计算公式
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1) mod 7
在公式中d表示日期中的日数,m表示月份数,y表示年数。
把一月和二月看成是上一年的十三月和十四月
//y-年,m-月,d-日期
- string CaculateWeekDay(int y,int m, int d)
- {
- if(m==1||m==2) {
- m+=12;
- y--;
- }
- int week=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7;
- string weekstr="";
- switch(week)
- {
- case 1: weekstr="星期一"; break;
- case 2: weekstr="星期二"; break;
- case 3: weekstr="星期三"; break;
- case 4: weekstr="星期四"; break;
- case 5: weekstr="星期五"; break;
- case 6: weekstr="星期六"; break;
- case 0: weekstr="星期日"; break;
- }
- return weekstr;
- }
复制代码
|