直接代码,有错误或更好的办法请留言,谢谢
typedef struct _Date {
int year;
int month;
int day;
}Date;
int getDateDiff(Date start, Date end) {
int mon[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
int n = 0;
int i, t;
//计算 [start, end) 的整年的天数
for (i = start.year; i < end.year; i++) {
if (0 == i % 4 && 0 != i % 100 || 0 == i % 400)
n += 366;
else
n += 365;
}
//减去开始年多余的部分
if (0 == start.year % 4 && 0 != start.year % 100 || 0 == start.year % 400)
mon[2] = 29;
else
mon[2] = 28;
n = n - start.day;
for (i = 1; i < start.month; i++) {
n = n - mon[i];
}
//加上最后一年缺少的天数
if (0 == end.year % 4 && 0 != end.year % 100 || 0 == end.year % 400)
mon[2] = 29;
else
mon[2] = 28;
n = n + end.day;
for (i = 1; i < end.month; i++) {
n = n + mon[i];
}
return n;
}