#include time.h
创新互联建站主要从事网站制作、成都网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务梓潼,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
#include stdio.h
time_t _mktime( char *slTime ) /** yyyy-mm-dd **/
{
struct tm tm_t;
int year;
int mon;
int day;
sscanf( slTime, "%4d-%2d-%2d", year, mon, day );
tm_t.tm_year = year - 1900;
tm_t.tm_mon = mon - 1;
tm_t.tm_mday = day;
tm_t.tm_hour = 12;
tm_t.tm_min = 00;
tm_t.tm_sec = 01;
tm_t.tm_wday = 0;
tm_t.tm_yday = 0;
tm_t.tm_isdst = 0;
return mktime( tm_t );
}
int daydiff( char *date1, char *date2 ) /** yyyy-mm-dd **/
{
time_t t1 = _mktime( date1 );
time_t t2 = _mktime( date2 );
time_t diff = abs( t2 - t1 );
return (int)( diff / (24*60*60) );
}
int main()
{
char date1[12], date2[12];
printf( "input date1: " );
scanf( "%s", date1 );
fflush( stdin );
printf( "input date2: " );
scanf( "%s", date2 );
fflush( stdin );
printf( "%s - %s is %d days\n", date1, date2, daydiff(date1, date2) );
}
#include stdio.h
#include stdlib.h
#include time.h
void main()
{
unsigned char time1[] = { 10, 8, 31, 9, 26 };
unsigned char time2[] = { 10, 8, 31, 9, 50 };
struct tm t1 = {0};
struct tm t2 = {0};
time_t _t1;
time_t _t2;
double diff;
t1.tm_year = time1[0] + 100;
t1.tm_mon = time1[1];
t1.tm_mday = time1[2];
t1.tm_hour = time1[3];
t1.tm_min = time1[4];
t2.tm_year = time2[0] + 100;
t2.tm_mon = time2[1];
t2.tm_mday = time2[2];
t2.tm_hour = time2[3];
t2.tm_min = time2[4];
_t1 = _mkgmtime( t1 );
_t2 = _mkgmtime( t2 );
diff = difftime(_t2, _t1 );
printf( "相差 %.0f 分钟\n", diff / 60 );
}
扩展资料:
C语言中有两个相关的函数用来计算时间差,分别是:
time_t time( time_t *t) 与 clock_t clock(void)
头文件: time.h
计算的时间单位分别为: s , ms
time_t 和 clock_t 是函数库time.h 中定义的用来保存时间的数据结构
返回值:
1、time : 返回从公元1970年1月1号的UTC时间从0时0分0秒算起到现在所经过的秒数。如果参数 t 非空指针的话,返回的时间会保存在 t 所指向的内存。
2、clock:返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数。 1单元 = 1 ms。
所以我们可以根据具体情况需求,判断采用哪一个函数。
具体用法如下例子:
#include time.h
#include stdio.h
#include stdlib.h
int main()
{
time_t c_start, t_start, c_end, t_end;
c_start = clock(); //! 单位为ms
t_start = time(NULL); //! 单位为s
system("pause");
c_end = clock();
t_end = time(NULL);
//!difftime(time_t, time_t)返回两个time_t变量间的时间间隔,即时间差
printf("The pause used %f ms by clock()\n",difftime(c_end,c_start));
printf("The pause used %f s by time()\n",difftime(t_end,t_start));
system("pause");
return 0;
}
因此,要计算某一函数块的占用时间时,只需要在执行该函数块之前和执行完该函数块之后调用同一个时间计算函数。再调用函数difftime()计算两者的差,即可得到耗费时间。
bool computer(file_date_t t1, file_date_t t2)
{
int min = t1.i_ddt2.i_dd?t1.i_dd:t2.i_dd;
int time1 = (t1.i_dd-min)*24+t1.i_hh;
int time2 = (t2.i_dd-min)*24+t2.i_hh;
if (time1 time2)
{
if (time1 - time2 12)
{
printf("时间超过12个小时!\n");
return true;
}
printf("时间不超过12个小时!\n");
return false;
}
else
{
if (time2 - time1 12)
{
printf("时间超过12个小时!\n");
return true;
}
printf("时间不超过12个小时!\n");
return false;
}
}
/*可以处理空格!!!*/
#includestdio.h
#includestring.h
struct TTime
{
int h,m,s;
long GetSec(){return 3600L*h+60*m+s;}
void StrToTime(char _str[])
{
int i,j,len=strlen(_str);
/*去空格*/
for(i=0;ilen;++i)
if(_str[i]==' ')
{
for(j=i;jlen-1;++j)
_str[j]=_str[j+1];
--len;
i=-1;
continue;
}
/*读小时*/
j=0;
for(i=0;ilen;++i)
if(_str[i]==':')
break;
else
j=j*10 + _str[i]-'0';
h = j;
/*读分钟*/
j=0;
for(++i;ilen;++i)
if(_str[i]==':')
break;
else
j=j*10 + _str[i]-'0';
m = j;
/*读秒*/
j=0;
for(++i;ilen;++i)
j=j*10 + _str[i]-'0';
s = j;
}
void ToPlan(long t)
{
int hh,mm,ss;
hh = t/3600;
t%=3600;
mm = t/60;
t%=60;
ss=t;
printf("%2.2d:%2.2d:%2.2d\n",hh,mm,ss);
}
}Ta,Tb,Tc;
void main()
{
char a[105],b[105];
gets(a);
gets(b);
Ta.StrToTime(a);
Tb.StrToTime(b);
printf("sec: %ld, time: ",Tb.GetSec()-Ta.GetSec());
Tc.ToPlan(Tb.GetSec()-Ta.GetSec());
}