C语言-计算两个时间相差
作者:互联网
C语言-计算两个时间相差
根据用户输入两个时间,判断两个时间的大小,计算两个时间的天数差。
设计思路
首先判断用户输入两个时间的大小,分辨起始日期和结束日期。
起始年剩余天数 + 结束年天数 + 起始年到结束年之年的整年天数 = 相差天数
需要解决的问题
判断该年是否为闰年。
两个日期是同年的情况。
代码
/*
计算两个日期之间的相差天数
*/
#include <stdio.h>
int main()
{
int year,month,leap,day,dayth=0,dayth1=0,dayth2=0,i,jsyear,jsmonth,jsday,year1,year2,month1,month2,day1,day2;
//输入当前日期
printf("请第一个年 月 日(格式为2021 1 1):\n");
scanf("%d%d%d",&year,&month,&day);
//输入结束日期
printf("请输入第二个年 月 日(格式为2021 1 1):\n");
scanf("%d%d%d",&jsyear,&jsmonth,&jsday);
//判断两个日期大小
if(year>=jsyear && month>=jsmonth && day>=jsday)
{
year1=year;
month1=month;
day1=day;
year2=jsyear;
month2=jsmonth;
day2=jsday;
printf("第一个输入的日期\(%d %d %d\)比第二次输入的日期\(%d %d %d\)大\n",year1,month1,day1,year2,month2,day2);
printf("%d/%d/%d - %d/%d/%d = ",year1,month1,day1,year2,month2,day2);
}
else
{
year1=jsyear;
month1=jsmonth;
day1=jsday;
year2=year;
month2=month;
day2=day;
printf("第二个输入的日期\(%d %d %d\)比第一次输入的日期\(%d %d %d\)大\n",year1,month1,day1,year2,month2,day2);
printf("%d/%d/%d - %d/%d/%d = ",year1,month1,day1,year2,month2,day2);
}
//计算今年的剩余天数
if(year2%4 == 0 && year2%100 != 0 || year2%400 ==0)//判断输入的年份是否为闰年
leap=29;
else
leap=28;
month2=month2-1;
switch(month2)
{
case 11 : dayth1 += 30;
case 10 : dayth1 += 31;
case 9 : dayth1 += 30;
case 8 : dayth1 += 31;
case 7 : dayth1 += 31;
case 6 : dayth1 += 30;
case 5 : dayth1 += 31;
case 4 : dayth1 += 30;
case 3 : dayth1 += 31;
case 2 : dayth1 += leap;
case 1 : dayth1 += 31;
}
dayth1+=day2;
if(leap == 29)
{
dayth1=366 - dayth1;
}
else
{
dayth1=365 - dayth1;
}
//计算最后一年的天数
if(year1%4 == 0 && year1%100 != 0 || year1%400 ==0)//判断输入的年份是否为闰年
leap=29;
else
leap=28;
month1=month1 - 1;
switch(month1)
{
case 11 : dayth2 += 30;
case 10 : dayth2 += 31;
case 9 : dayth2 += 30;
case 8 : dayth2 += 31;
case 7 : dayth2 += 31;
case 6 : dayth2 += 30;
case 5 : dayth2 += 31;
case 4 : dayth2 += 30;
case 3 : dayth2 += 31;
case 2 : dayth2 += leap;
case 1 : dayth2 += 31;
}
dayth2+=day1;
//判断是否同年
if (year1 == year2)
{
if(leap == 29)
{
dayth2=366 - dayth2;
}
else
{
dayth2=365 - dayth2;
}
dayth= dayth1 - dayth2;
printf("%d\n",dayth);
return 0;
}
//计算中间整年的天数
for(i=year2+1;i<year1;i++)
{
if(i%4 == 0 && i%100 != 0 || i%400 ==0)//判断输入的年份是否为闰年
dayth+=366;
else
dayth+=365;
}
dayth+= dayth1 + dayth2;
printf("%d\n",dayth);
return 0;
}
标签:case,相差,month1,31,C语言,dayth1,dayth2,计算,month2 来源: https://blog.csdn.net/qq_37149242/article/details/120919025