|
发表于 2010-11-30 15:41:26
|
显示全部楼层
回复【28楼】wqsjob
//我一直在用的代码,呵呵,至少我觉得比楼主的效率高,不论空间还是时间,另外,扩展个几千年也很容易。
//51的话,可以定义在code,不光省ram,还节省代码空间(少一条mov指令)。
uchar weekdata[]={0,3,3,6,1,4,6,2,5,0,3,5};
/*2000-2099*/
unsigned char getweekday(unsigned char year,unsigned char month,unsigned char day)
{
return ((6+weekdata[month-1]+year+day+year/4)%7);
}
刚才忘了说了,这里0代表星期天,使用者应该加上日前限定的功能。<font color="#699bcd">
本贴被 wqsjob 编辑过,最后修改时间:2008-10-14,1......
-----------------------------------------------------------------------
这个算法在2000年的1月和2月计算中不对,应该多算了一天! |
|