#include "stdafx.h"
#include "math.h"
#include <cstdio>
using namespace std;
bool IsRunYear(int y)
{
bool result=false;
if(y%4==0&&y%100!=0||y%400==0)
result=true;
return result;
}
int MaxDay(int m,int y)
{
int result;
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
result=31;
else if(m==2&&IsRunYear(y))
result=29;
else if(m==2&&!IsRunYear(y))
result=28;
else
result=30;
return result;
}
long DiffDay(int m,int y)
{
long val=0;
while(--m)
{
val+=MaxDay(m,y);
}
return val;
}
long DiffYear(int minY,int maxY)
{
long diff=0;
do
{
if(IsRunYear(minY))
diff+=366;
else
diff+=365;
}
while(++minY!=maxY);
return diff;
}
int main()
{
int y0,y1,m0,m1,d0,d1;
long diffDay;
do
{
printf("Please input the first year,month,day between 0000-1-1 and 9999-12-31\n");
scanf("%d,%d,%d",&y0,&m0,&d0);
}
while(!(y0>=0&&y0<=9999&m0>=1&&m0<=12&d0>=1&&d0<=MaxDay(m0,y0)));
do
{
printf("Please input the second year,month,day between 0000-1-1 and 9999-12-31\n");
scanf("%d,%d,%d",&y1,&m1,&d1);
}
while(!(y1>=0&&y1<=9999&m1>=1&&m1<=12&&d1>=1&&d1<=MaxDay(m1,y1)));
if(y0==y1&&m0==m1)
diffDay=abs(d0-d1);
else if (y0==y1)
{
long day1=DiffDay(m0,y0)+d0;
long day2=DiffDay(m1,y1)+d1;
diffDay=abs(day1-day2);
}
else
{
int minY,maxY;
long day1,day2;
if(y0>y1)
{
minY=y1;
maxY=y0;
day1=DiffDay(m1,y1)+d1;
day2=DiffDay(m0,y0)+d0;
}
else
{
minY=y0;
maxY=y1;
day1=DiffDay(m0,y0)+d0;
day2=DiffDay(m1,y1)+d1;
}
long day3=DiffYear(minY,maxY);
diffDay=day3+day2-day1;
}
printf("The diff day=%ld",diffDay);
return 0;
}