日期:
//判断闰年
bool isLeapYear(int year) { return (year%4 == 0 && year%100 != 0) || year%400 == 0; }
//计算日期从当年1月1日算起的天数
int getDayofYear(const Date date){
int year=date.year, month=date.month, day=date.day;
int i, sum=day;
int a[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int b[13] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (isLeapYear(year))
for(i=0; i<month; i++) sum += b[i];
else
for(i=0; i<month; i++) sum += a[i];
/*
int c[13] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365}
int d[13] = {0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366}
if (isLeapYear(year))
sum += d[i];
else
sum += c[i];
*/
return sum;
}
//计算两个日期之间相差的天数
int getDayDiffer(const Date today,const Date anyday){
int year=today.year, sum=0;
if(today.year>anyday.year){//today的年份比anyday大
sum+=getDayofYear(today);//先算出today当前年份的剩余天数
--year;
while(year>anyday.year){//中间年份可以直接循环相加
if(isLeapYear(year)){
sum+=366;
--year;
}
else{
sum+=365;
--year;
}
}
//执行到这一步一定year=anyday.year
if(isLeapYear(year))//算出anyday.year的那一年还剩多少天
sum+=366-getDayofYear(anyday);
else
sum+=365-getDayofYear(anyday);
}
else if(today.year==anyday.year){//两个日期为同一年
sum+=getDayofYear(