计算两个日期相差的天数

#include<stdio.h>

int IsRun(int year)
{
    if(year%4==0&&year%100!=0||year%400==0)
        return 1;
    else
        return 0;
}
void huafen(int &year,int &month,int &day)
{
    month=year%10000;
    year=year/10000;
    day=month%100;
    month=month/100;
}
int YearDays(int year,int month,int day)
{
    int monthday[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    int sum=0;
    for(int i=1;i<month;i++)
    {
        sum=sum+monthday[i-1];
    }
     sum+=day;
     if(month>2&&IsRun(year))
         sum++;
     return sum;
} 
int Distance(int year1,int month1,int day1,int year2,int month2,int day2)
{
    int sum=0;
    if(year1==year2)
    {
        sum=YearDays(year1,month1,day1)-YearDays(year2,month2,day2);
        sum=sum>0?sum:(-sum);
        return sum+1;
    }    
    int year3,month3,day3;
    if(year1<year2)
    {
        year3=year2;
        month3=month2;
        day3=day2;
    }
    else
    {
        year3=year1;
        month3=month1;
        day3=day1;
        year1=year2;
        month1=month2;
        day1=day2;
    }
    for(int i=year1;i<year3;i++)
    {
        sum+=365;
        if(IsRun(i))
            sum++;
    }
    sum=sum+YearDays(year3,month3,day3)-YearDays(year1,month1,day1)+1;
    return sum;
}
int main()
{
    
    int year;
    int year1,month1,day1,year2,month2,day2;
    while(scanf("%d",&year1)==1)
    {
        scanf("%d",&year2);
        huafen(year1,month1,day1);
        huafen(year2,month2,day2);
        //printf("%d %d %d\n%d %d %d\n",year1,month1,day1,year2,month2,day2);
        printf("%d\n",Distance(year1,month1,day1,year2,month2,day2));
    }
    return 0;
 } 

posted @ 2018-03-20 17:40  王毅2016  阅读(266)  评论(0编辑  收藏  举报