计算任意两个日期的天数
在线等 编写一个C程序计算任意两个日期之间间隔天数,要求以yyyy-mm-dd的格式不分先后输入两个有效日期,计算他们之间的间隔天数。
所谓的间隔如何定义:
比如 3日到4日 之间 间隔 0天 or 1天 or 2天 ????
程序代码:#include <stdio.h>
//获取公历年的天数
int year_alldays(int year)
{
if((year%4==0 && year%100!=0) || year%400==0) return 366; else return 365;
}
//获取公历年初至某整月的天数
int year_sumday(int year,int month)
{
int sum=0;
int rui[12]={31,29,31,30,31,30,31,31,30,31,30,31};
int ping[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int ruiflag=0;
if((year%4==0 &&year%100!=0) || year%400==0) ruiflag=1;
for(int index=0;index<month-1;index++)
{
if(ruiflag==1) sum+=rui[index];else sum+=ping[index];
}
return sum;
}
//获取从公历1800年1月25日至当前日期的总天数
int get_g_alldays(int year,int month,int day)
{
int i=1800,days=-24;
while(i<year)
{
days+=year_alldays(i);
i++;
}
int days2=year_sumday(year,month);
return days+days2+day;
}
int main(void)
{
int year1,year2,month1,month2,day1,day2;
printf("请输入起始日期 输入格式yyyy-mm-dd:\n");
scanf("%d-%d-%d",&year1,&month1,&day1);
printf("请输入终止日期 输入格式yyyy-mm-dd:\n");
scanf("%d-%d-%d",&year2,&month2,&day2);
int days1=get_g_alldays(year1,month1,day1);
int days2=get_g_alldays(year2,month2,day2);
int sout=0;
if(days1>=days2) sout=days1-days2;else sout=days2-days1;
printf("%4d年%2d月%2d日 到 %4d年%2d月%2d日 间隔 %8d 天.\n",year1,month1,day1,year2,month2,day2,sout);
return 0;
}

[此贴子已经被作者于2018-1-11 09:24编辑过]