如何使用c语言进行两个日期之间相差的天数呢?接下来请看代码。
本人是一名大一新生,若代码有误还请告知,感激不尽。
#include<stdio.h>
int main(){
int y1,m1,d1,i,j=0,k;
int y2,m2,d2,sum,l;
printf("请输入开始年月日(格式为年/月/日):");
scanf("%d/%d/%d",&y1,&m1,&d1);
printf("请输入最后年月日(格式为年/月/日):");
scanf("%d/%d/%d",&y2,&m2,&d2);
k=y2-y1; //计算年份之间差了几年
while(y2>y1){
if(y1%4==0&&y1%100!=0||y1%400==0){ //计算闰年的个数 闰年一年有366天
j++;
}
y1++;
}
l=k-j; //计算平年的年数 平年一年有365天
switch(m1)
{
case 1:m1=0; break;
case 2:m1=31; break;
case 3:m1=31+28; break;
case 4:m1=31+28+31; break;
case 5:m1=31+28+31+30; break;
case 6:m1=31+28+31+30+31; break;
case 7:m1=31+28+31+30+31+30; break;
case 8:m1=31+28+31+30+31+30+31; break;
case 9:m1=31+28+31+30+31+30+31+31; break;
case 10:m1=31+28+31+30+31+30+31+31+30; break;
case 11:m1=31+28+31+30+31+30+31+31+30+31; break;
case 12:m1=31+28+31+30+31+30+31+31+30+31+30; break;
}
switch(m2)
{
case 1:m2=0; break;
case 2:m2=31; break;
case 3:m2=31+29; break;
case 4:m2=31+29+31; break;
case 5:m2=31+29+31+30; break;
case 6:m2=31+29+31+30+31; break;
case 7:m2=31+29+31+30+31+30; break;
case 8:m2=31+29+31+30+31+30+31; break;
case 9:m2=31+29+31+30+31+30+31+31; break;
case 10:m2=31+29+31+30+31+30+31+31+30; break;
case 11:m2=31+29+31+30+31+30+31+31+30+31; break;
case 12:m2=31+29+31+30+31+30+31+31+30+31+30; break;
}
sum=j*366+l*365-m1-d1+m2+d2-1; // 相差的天数=中间相差的年数乘以365/366-开始年的天数+最后年的天数-1
printf("中间相差:%d 天\n",sum);
return 0;
}