根据日期判断星期几
之前在给一个客户做鼠标轨迹热点分析的功能的时候,需要根据日期显示当前是星期几,当时写了一堆有的没的函数实现了功能。后来无意中发现了基姆拉尔森计算公式,可以直接实现目的。
算法如下:
基姆拉尔森计算公式
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7
在公式中d表示日期中的日数,m表示月份数,y表示年数。
注意:在公式中有个与其他公式不同的地方:
把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。
//返回值0-6表示星期天-星期6
int CalculateWeekDay(int y, int m,int d) { if(m==1||m==2) m+=12,y--; int iWeek = (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7; return iWeek; }
调用int iWeekday = CalculateWeekDay(2003,13,10);