注意蔡勒公式的结果是可以为负数的,如-1代表周6,-2代表周五,很多实现忽略了这点,出现错误。
int gettheweek(int year,int month,int day)
{
int week=0;
int century=year/100;
year= year%100;
if(month==1||month==2)
{
month+=12;
year--;
}
week= year+year/4+century/4-2*century+(26*(month+1))/10+day-1;
week=week%7;
return (week>=0)?week:(7+week);
}