ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

C语言-计算两个时间相差

2021-10-23 12:04:07  阅读:266  来源: 互联网

标签:case 相差 month1 31 C语言 dayth1 dayth2 计算 month2


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有