标签:星期几算法
#include <iostream> #include <cstdio> using namespace std; //对于给定的日期,判断是星期几 void week(int y,int m,int d) { //e代表着 从今年的1月1日到目前的天数 int t,e; switch(m) { case 1: e=d; break; case 2: e=31+d; break; case 3: e=59+d; break; case 4: e=90+d; break; case 5: e=120+d; break; case 6: e=151+d; break; case 7: e=181+d; break; case 8: e=212+d; break; case 9: e=243+d; break; case 10: e=273+d; break; case 11: e=304+d; break; case 12: e=334+d; break; } //如果是润年,天数需要加1 if((y%4==0&&y%100!=0)||(y%400==0)) if(m>2) ++e; --y; /* **t=365*y+y/4-y/100+y/400+e; **t=(52*7+1)*y+y/4-y/100+y/400+e; **y/4-y/100+y/400 代表从元年到今年 闰年多出的天数 **t%=7;与t=y+y/4-y/100+y/400+e;t=t%7;相同故: */ //类似一个小知识:去年的今天 在星期上 要比今年的今天少一 t=y+y/4-y/100+y/400+e; t=t%7; if(t==1) printf("Monday\n"); else if(t==2) printf("Tuesday\n"); else if(t==3) printf("Wednesday\n"); else if(t==4) printf("Thursday\n"); else if(t==5) printf("Friday\n"); else if(t==6) printf("Saturday\n"); else printf("Sunday\n"); } int main() { //从输出结果上看 确实在星期上面少一 week(2013,8,15); week(2014,8,15); return 0; }
标签:星期几算法
原文地址:http://blog.csdn.net/xd_122/article/details/38588957