#include
unsigned char getweek(unsigned char,unsigned char,unsigned char);
unsigned char getweek(unsigned char year,unsigned char month,unsigned char day)
{
unsigned char week,tp;
tp=0;week=5; //初始化2000-01-01星期六
while(tp!=year){ //处理年(2000开始)
week++; //是上一年的星期的下一天 公式:365%7=1
if(tp%4==0)week++; //判断是否是閏年,閏年2月是29天 公式:366%7=2
tp++; //下一年的1月1日
}
tp=1;
while(tp!=month){ //处理月(1月开始)
switch(tp){
case 1:case 3:case 5:case 7:case 8:case 10:case 12: week=week+3;break; //大月天数31%7
case 2: if(year%4==0)week++;break; //閏月天数,閏年2月是29天 公式:366%7=2 29%7
case 4:case 6:case 9:case 11: week=week+2;break; //小月天数30%7
}
tp++; //处理月
}
week=week+day; //处理日(從1日开始)
week=week%7;
if(week==0) week=7;
return week; //返回星期
}
提取码: m3mn