自制日期计算

197 阅读1分钟

#include <stdio.h>

int main(void)

{

int year,month,day,yearmax,year1,month1,day1,year0,month0,days,day0,months;
int n,yearmin,j,b,c,d;
int mmax,mmin;
int e,f,g,h,l,p,q,i,a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
printf("请输入两个日期,格式为2000.01.01 2021.01.01\n");
scanf("%d.%d.%d %d.%d.%d",&year,&month,&day,&year1,&month1,&day1);

        if(year<year1)
    year0=year1-year;
        else
    year0=year-year1;
        if(year<year1)
    yearmax=year1;
        else
    yearmax=year;
        if(year<year1)
    yearmin=year;
        else
    yearmin=year1;
    j=yearmin;
    n=0;
        while (yearmin<=j&&j<=yearmax)
    {
    b=j%4;
    c=j%100;
    d=j%400;
    j++;
    if(b==0&&c!=0||d==0)
    n++;
    }
    if(year<year1&&month>month1||year<year1&&month==month1&&day>day1||year>year1&&month<month1)
        year0=year=-1;


    if(month<month1)
    mmin=month;
    else
    mmin=month1;
    if(month<month1)
    mmax=month1;
    else
    mmax=month;

    if(year==year1&&month<month1&&day>day1)
        {
            p=day;
            month0=mmax-mmin;
            e=mmin;
            day0=0;
            while (mmin<=e&&e<mmax)
                {
                day0=day0+a[e-1];
                e++;
                }
            q=p-day1;
            day0=day0-q;
        day0=+day0+year0*365+n;//年
        printf("相差%d年,%d月,%d日。\n",year0,month0,days);
        printf("共计相差%d日。\n",day0);
        printf("其中有%d个闰年\n",n);
        return 0;
        }
   
    month0=mmax-mmin;
    e=mmin;
    day0=0;
    while (mmin<=e&&e<mmax)
        {
        day0=day0+a[e-1];
        e++;
        }//月(数组算法)

    if (day<day1)
    days=day1-day;
    else
    days=day-day1;//日 
    

day0=days+day0+year0*365+n;//年
printf("相差%d年,%d月,%d日。\n",year0,month0,days);
printf("共计相差%d日。\n",day0);
printf("其中有%d个闰年\n",n);
return 0;

}