2个日期之间相差天数
描述
时光匆匆,日子一天天的过去,一个百岁老人,所活天数也不过36500多天。现在,小明突然想知道自己已经活了几天。
已知小明的出生日期和现在的日期,请你帮助小明计算出他已活的天数。
如,出生日期为2011-10-01,现在是2011-10-27,则已活的天数为26天。
输入
2个日期d1,d2(之间以1个空格间隔,且d2>d1),分别表示小明的出生日期和现在的日期,形式都为yyyy-mm-dd。
保证输入的日期合法,而且在[1000-01-01,9999-12-31]范围内。
输出
输出小明已活的天数。
输入样例 1
2011-10-01 2011-10-27
输出样例 1
26
输入样例 2
2008-02-01 2011-10-27
输出样例 2
1364
#include <stdio.h>
#include <math.h>
#define Y(y) (y % 4 == 0 && y % 100 != 0 || y % 400 == 0 )
typedef struct date
{
int y;
int m;
int d;
}Date;
int a[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
int days(Date s)
{
int i, sum = 0;
for (i = 0; i < s.y; i++)
{
if (Y(i))
sum += 366;
else
sum += 365;
}
if (Y(i))
a[2] = 29;
for (int k = 1; k < s.m; k++)
sum += a[k];
return sum + s.d;
}
int main()
{
Date s1, s2;
scanf("%d-%d-%d", &s1.y, &s1.m, &s1.d);
scanf("%d-%d-%d", &s2.y, &s2.m, &s2.d);
printf("%d", abs(days(s1) - days(s2)));
return 0;
}