其他分享
首页 > 其他分享> > C语言-计算两个时间相差

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