C语言 ---计算连个日期之间的天数转换

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Wekic/article/details/84952496

/* 返回绝对值 */
int abs(int a,int b)
{
	if(a>=b)
		return (a-b);
	else
		return (b-a);
}
/* 判断是否为闰年:是,返回 1 ; 不是, 返回 0 . */
int IsLeap(int year)
{
	if(((year%4==0)&&(year%100!=0))||year%400==0)
		return 1;
	else
		return 0;
}
/* 判断某个日期从年初(y年1月1日)到该天(y年m月d日)的天数 */
int Days(int y,int m,int d)
{
	int days[]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
	int i;
	int sum = 0 ; /* 计算天数 */
	if(IsLeap(y)) /* 如果为闰年,2月有 29 天 */
		days[2] = 29 ;
	for(i=0; i<m; i++)
		sum = sum +days[i] ;
	sum = sum + d - 1 ;
	return sum;
}
/*
判断两个日期之间的天数.
日期一:年 y1,月 m1,日 d1;
日期一:年 y2,月 m2,日 d2;
*/
int DiffDays(int y1,int m1,int d1,int y2,int m2,int d2)
{
	int s1,s2; /* 计算两个日期从年初到该日期的天数 */
	int count; /* 计算两个年份之间的差值 */
	int sum=0; /* */
	int t,t1,t2;
	if(y1==y2)
	{
		s1 = Days(y1,m1,d1);
		s2 = Days(y2,m2,d2);
		return abs(s1,s2);
	}
	else if(y1>y2)
	{
		count = y1 - y2 ;
		if(count == 1)
		{
			t1 = Days(y1,m1,d1);
			t2 = Days(y2,12,31) - Days(y2,m2,d2);
			return (t1+t2+count);
		}
		else
		{
			for(t = y2+1; t<y1; t++)
				sum = sum + Days(t,12,31);
			cout<<sum<<endl;
			t2 = Days(y2,12,31) - Days(y2,m2,d2);
			t1 = Days(y1,m1,d1);
			return (sum+t1+t2+count);
		}
	}
	else
	{
		count = y2 - y1 ;
		if(count == 1)
		{
			t2 = Days(y2,m2,d2);
			t1 = Days(y1,12,31) - Days(y1,m1,d1);
			return (t1+t2+count);
		}
		else
		{
			for(t = y1+1; t<y2; t++)
				sum = sum + Days(t,12,31);
			t2 = Days(y2,m2,d2);
			t1 = Days(y1,12,31) - Days(y1,m1,d1);
			return (sum+t1+t2+count);
		}
	}
}

猜你喜欢

转载自blog.csdn.net/Wekic/article/details/84952496