int CalculateDays(int ys, int ms, int ds, int ye, int me, int de) { int days = CalcYearRestDays(ys, ms, ds); if(ys != ye) /*不是同一年的日期*/ { if((ye - ys) >= ) /*间隔超过一年,要计算间隔的整年时间*/ { days += CalcYearsDays(ys + , ye); } days += CalcYearPassedDays(ye, me, de); } else { days = days - CalcYearRestDays(ye, me, de); } return days; } /*计算一年中过去的天数,包括指定的这一天*/ int CalcYearPassedDays(int year, int month, int day) { int passedDays = ; int i; for(i = ; i < month - ; i++) { passedDays += daysOfMonth[i]; } passedDays += day; if((month > ) && IsLeapYear(year)) passedDays++; return passedDays; } /*计算一年中还剩下的天数,不包括指定的这一天*/ int CalcYearRestDays(int year, int month, int day) { int leftDays = daysOfMonth[month - ] - day; int i; for(i = month; i < MONTHES_FOR_YEAR; i++) { leftDays += daysOfMonth[i]; } if((month <= ) && IsLeapYear(year)) leftDays++; return leftDays; } /* 79 计算years年1月1日和yeare年1月1日之间的天数, 80 包括years年1月1日,但是不包括yeare年1月1日 81 */ int CalcYearsDays(int years, int yeare) { int days = ; int i; for(i = years; i < yeare; i++) { if(IsLeapYear(i)) days += DAYS_OF_LEAP_YEAR; else days += DAYS_OF_NORMAL_YEAR; } return days; }