C语言:简单实现计算两个日期的间距天数

细节要求:

日期1:起始日期

日期2:最终日期

需要考虑:

若两个日期在同一年,则日期2-日期1

若两个日期不在同一年,则需要考虑闰年的额外天数

代码参考:

#include <stdio.h>

int main(){

int years,monthst,dayst;

int yearend,monthend,daystend;

int total=0;

int i;



printf("请输入开始日期:");

scanf("%d/%d/%d",&years,&monthst,&dayst);

printf("请输入结束日期:");

scanf("%d/%d/%d",&yearend,&monthend,&daystend);



total = (yearend - years)*365;//相差日期的天数

total -= days(years,monthst,dayst);//开始日期

total += days(yearend,monthend,daystend);//结束日期

while(years != yearend)

{

if(years%4 == 0 && years%100 != 0 || years%400 == 0)//判断是不是润牛

total+=1;

if(total<=0)//如果开始日期大于结束日期则天数相差小于等于0

years--;

else

years++;



}

total<=0?total-=1:total;

printf("%d年%d月%d日与%d年%d月%d日相差了%d天\n",years,monthst,dayst,yearend,monthend,daystend,total);

return 0;



}

days(int year,int month,int day){

int sum = 0;

int i;

int months[12] = {31,28,31,30,31,30,31,31,30,31,30,31};

for(i = 0; i < month; i++)

sum += months[i];

sum += day;

if((year%4 == 0 && year%100 != 0 || year%400 == 0) && month >= 3)

sum += 1;

return sum;

}


版权声明:本文为Kumakuchi原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。