1 99 int CalculateDays(int ys, int ms, int ds, int ye, int me, int de) 2 3 100 { 4 5 101 int days = CalcYearRestDays(ys, ms, ds); 6 7 102 8 9 103 if(ys != ye) /*不是同一年的日期*/ 10 11 104 { 12 13 105 if((ye - ys) >= 2) /*间隔超过一年,要计算间隔的整年时间*/ 14 15 106 { 16 17 107 days += CalcYearsDays(ys + 1, ye); 18 19 108 } 20 21 109 days += CalcYearPassedDays(ye, me, de); 22 23 110 } 24 25 111 else 26 27 112 { 28 29 113 days = days - CalcYearRestDays(ye, me, de); 30 31 114 } 32 33 115 34 35 116 return days; 36 37 117 } 38 39 43 /*计算一年中过去的天数,包括指定的这一天*/ 40 41 44 int CalcYearPassedDays(int year, int month, int day) 42 43 45 { 44 45 46 int passedDays = 0; 46 47 47 48 49 48 int i; 50 51 49 for(i = 0; i < month - 1; i++) 52 53 50 { 54 55 51 passedDays += daysOfMonth[i]; 56 57 52 } 58 59 53 60 61 54 passedDays += day; 62 63 55 if((month > 2) && IsLeapYear(year)) 64 65 56 passedDays++; 66 67 57 68 69 58 return passedDays; 70 71 59 } 72 73 60 74 75 61 /*计算一年中还剩下的天数,不包括指定的这一天*/ 76 77 62 int CalcYearRestDays(int year, int month, int day) 78 79 63 { 80 81 64 int leftDays = daysOfMonth[month - 1] - day; 82 83 65 84 85 66 int i; 86 87 67 for(i = month; i < MONTHES_FOR_YEAR; i++) 88 89 68 { 90 91 69 leftDays += daysOfMonth[i]; 92 93 70 } 94 95 71 96 97 72 if((month <= 2) && IsLeapYear(year)) 98 99 73 leftDays++; 100 101 74 102 103 75 return leftDays; 104 105 76 } 106 107 77 108 109 78 /* 110 111 79 计算years年1月1日和yeare年1月1日之间的天数, 112 113 80 包括years年1月1日,但是不包括yeare年1月1日 114 115 81 */ 116 117 82 int CalcYearsDays(int years, int yeare) 118 119 83 { 120 121 84 int days = 0; 122 123 85 124 125 86 int i; 126 127 87 for(i = years; i < yeare; i++) 128 129 88 { 130 131 89 if(IsLeapYear(i)) 132 133 90 days += DAYS_OF_LEAP_YEAR; 134 135 91 else 136 137 92 days += DAYS_OF_NORMAL_YEAR; 138 139 93 } 140 141 94 142 143 95 return days; 144 145 96 }
原文:http://www.cnblogs.com/Noah-li/p/4670476.html