可是有点小错误(结果差两天),请教高手.
struct Date
{
int month; int day; int year;
};
class TDate
{
protect: Date pDate;
public:int WeekDay();
//其他接口函数省略,在这里主要解决的是星期,所以不考虑.
};
//--------------------------------------------
int TDate::WeekDay()
{
if(pDate->year<1980) return 8; //1980年前不计算
long days=0; //1980.1.6是星期日
days=(pDate->year-1980)*365;
for(int y=1;y<pDate->year;y++) //有几个闰年就加几次
if(y%4==0)
days++;
if(pDate->month==1) //若是一月
days+=pDate->day;
else
{
for(int i=1;i<pDate->month;i++) //过几个月加加上响应的天数
{
switch(i)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:days+=31;
break;
case 4:
case 6:
case 9:
case 11:days+=30;
break;
case 2:
if((pDate->year)%4)
days+=29;
else
days+=28;
break;
};
}
days+=pDate->day; //该月的第几天,要加上
}
return (days-4)%7; //days是与1980年1月6日相差的天数 //这里应是return (days-6)%7;,但是运行的结果差两天!
}
所以,请教一下.