求计算时间间隔的C代码,谢谢!
比如时间一2001年1月2日,时间二2008年4月5日,我想知道两个日期之间有多少天,各位有C语言的算法函数吗?谢谢了!
[解决办法]
( mktime(xxx) - mktime(xxx) ) / 24*60*60 = 你要的天数
[解决办法]
struct Time
{
int year;
int month;
int day;
int hour;
int second;
};
int timeInterval(Time a,Time b);
int allday(Time a);
int _tmain(int argc, _TCHAR* argv[])
{
Time a,b;
a.year=2000;
a.month=3;
a.day=1;
a.hour=21;
a.second=18;
b.year=2000;
b.month=2;
b.day=28;
b.hour=20;
b.second=17;
int x=timeInterval(a,b);
printf( "%d\n ",x);
return 0;
}
int timeInterval(Time a,Time b)
{
int x,y;
int sum;
x=allday(a);
y=allday(b);
sum=(x-y)*24+a.hour-b.hour;
if(a.second <b.second)
{
sum=sum-1;
}else {
sum=sum;
}
return sum;
}
int allday(Time a)
{
int run[12]={31,29,31,30,31,30,31,31,30,31,30,31};
int notrun[12]={31,29,31,30,31,30,31,31,30,31,30,31};
int x;
x=(a.year)*365+a.year/4+a.year/400-a.year/100;
if((((a.year%4)==0)&&((a.year%4)!=100))||(a.year%400==0))
{
for(int i=0;i <a.month;i++)
{
if(i> 0)
{
x=x+notrun[i-1];
}
}
}
else
{
for(int i=0;i <a.month;i++)
{
if(i> 0)
{
x=x+notrun[i-1];
}
}
}
x=x+a.day;
return x;
}
[解决办法]
学习,接分
[解决办法]
先天数相减,不够减向月份借1,这里要考虑这个月多少天
再算月份之差,并换为天数,这里要考虑各个月多少天
最后年份相减,也换为天数,这里要考虑没有闰年
[解决办法]
mktime()是 <time.h> 中的库函数。还有一个difftime可以用,很方便。
[解决办法]
vc 6.0
#include "stdio.h "
#include "time.h "
void main()
{
time_t time1sec,time2sec;
double days;
struct tm time1,time2;
time1.tm_year=2001-1900;
time1.tm_mon=1;
time1.tm_mday=2;
time1.tm_hour=0;
time1.tm_min=0;
time1.tm_sec=0;
time1.tm_isdst=0;
time2.tm_year=2008-1900;
time2.tm_mon=4;
time2.tm_mday=5;
time2.tm_hour=0;
time2.tm_min=0;
time2.tm_sec=0;
time2.tm_isdst=0;
time1sec=mktime(&time1);
time2sec=mktime(&time2);
days=(time2sec-time1sec)/(24*60*60.0);
printf( "From 2001 2 1 to 2008 4 5 is %f days\n ",days);
}