c实现任给两日期计算相隔天数问题
2014-03-15 23:38
323 查看
我的思路是先计算两整年相隔多少天,再减去日期小的那个日期那年已经过去的天数,最后加上日期大的那个日期那年已经过去的天数。
/* 标准文档模板 */ #include "stdio.h" int IsLeap(int year)//判断闰年。能被4整除且又能不能被100整除 是闰年,能直接被400整除也是闰年 { if(year%4==0&&year%100!=0||year%400==0) return 1; else return 0; } int PastedDaysOfThisYear(int y,int m,int d)//计算给出的年月日距离当年已经过了多少天 { int i,temp=d; for(i = 1;i < m; i++) { if(IsLeap(y)==0)//平年 { switch (i) { case 1:case 3:case 5:case 7:case 8:case 10:case 12: temp += 31;break; case 2:temp += 28;break; case 4:case 6:case 9 :case 11: temp += 30;break; } } else//闰年 { switch (i) { case 1:case 3:case 5:case 7:case 8:case 10:case 12: temp += 31;break; case 2:temp += 29;break; case 4:case 6:case 9 :case 11: temp += 30;break; } } } return temp; } int PastedDaysBeforeThisYear(int yE,int yS)//计算任给的两年相差多少天 { int res = 0,i=1; if(yE - yS == 0) return res; else { while(yS+i <= yE) { if(IsLeap(yS+i-1)) res += 366; else res+=365; i++; } } return res; } int days(long long e,long long s)//计算任给两个日期之间的相隔天数 { int y[2],m[2],d[2],sum; y[0] = e/10000; y[1] = s/10000; m[0] = e%10000/100; m[1] = s%10000/100; d[0] = e%10000%100; d[1] = s%10000%100; sum = PastedDaysBeforeThisYear(y[0],y[1])-PastedDaysOfThisYear(y[1],m[1],d[1])+PastedDaysOfThisYear(y[0],m[0],d[0]); return sum; } void main() { printf("%d", days(20131021,19981019)); getch(); }
相关文章推荐
- 用c++实现输入任意两个日期 计算相隔天数
- 计算个日期之间相隔的天数
- fmt标签如何计算两个日期之间相隔的天数
- java7 计算日期相隔天数的最优方法
- 计算两个日期之间相隔的天数
- 计算某个日期与当前日期相隔的天数
- Java 计算日期相隔天数和相差的小时数
- Android 计算两个日期之间相隔的天数
- js计算日期相差天数的问题
- 用shell脚本,指定两个日期,计算相隔天数
- php计算时间差/两个时间日期相隔的天数,时,分,秒
- java实现计算两个日期间间隔天数
- 计算任意2个日期之间的天数(C语言实现)
- 如何计算两个日期之间相隔的天数?calendar的用法
- c#(asp.net) 如何计算两个日期之间相隔天数
- java计算两个日期之间相隔的天数
- 计算两个日期之间相隔的天数
- php计算时间差/两个时间日期相隔的天数,时,分,秒.
- calendar 计算两个日期之间相隔的天数
- 用javascript实现计算两个日期的间隔天数