74 lines
1.5 KiB
C
74 lines
1.5 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
typedef struct date_s
|
|
{
|
|
int year;
|
|
int month;
|
|
int day;
|
|
} DATE;
|
|
|
|
int daysOfMonth(int year, int month)
|
|
{
|
|
switch (month)
|
|
{
|
|
case 2:
|
|
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
|
|
return 29;
|
|
else
|
|
return 28;
|
|
case 4:
|
|
case 6:
|
|
case 9:
|
|
case 11:
|
|
return 30;
|
|
default:
|
|
return 31;
|
|
}
|
|
}
|
|
|
|
int sumDays(int year, int month, int day)
|
|
{
|
|
int sum = day;
|
|
for (int i = 1; i < month; i++)
|
|
{
|
|
sum += daysOfMonth(year, i);
|
|
}
|
|
return sum;
|
|
}
|
|
|
|
int yearOFdays(int year1, int year2)
|
|
{
|
|
int sum = 0;
|
|
int minYear = (year1 < year2) ? year1 : year2;
|
|
int maxYear = (year1 > year2) ? year1 : year2;
|
|
for (int i = minYear; i < maxYear; i++)
|
|
{
|
|
if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0)
|
|
sum += 366;
|
|
else
|
|
sum += 365;
|
|
}
|
|
return sum;
|
|
}
|
|
|
|
int main()
|
|
{
|
|
DATE day1, day2;
|
|
printf("请输入第一个日期,输入格式为 年,月,日 ");
|
|
scanf("%d,%d,%d", &day1.year, &day1.month, &day1.day);
|
|
printf("请输入第二个日期,输入格式为 年,月,日 ");
|
|
scanf("%d,%d,%d", &day2.year, &day2.month, &day2.day);
|
|
|
|
int sumdays1 = sumDays(day1.year, day1.month, day1.day);
|
|
int sumdays2 = sumDays(day2.year, day2.month, day2.day);
|
|
|
|
int yearMoreDays = yearOFdays(day1.year, day2.year);
|
|
|
|
int days = abs(sumdays1 - sumdays2) + yearMoreDays;
|
|
printf("两个日期的天数差为: %d", days);
|
|
|
|
return 0;
|
|
}
|