#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 )
}
扩展资料: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()计算两者的差,即可得到耗费时间。
#include<time.h>
clock_t
start
clock_t
end
start
=
clock()
...//需要计算时间的代码片断
end
=
clock()
printf("%ld",
(end
-
start)/clk_tck/60)
/*可以处理空格!!!*/
#include<stdio.h>
#include<string.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=0i<len++i)
if(_str[i]==' ')
{
for(j=ij<len-1++j)
_str[j]=_str[j+1]
--len
i=-1
continue
}
/*读小时*/
j=0
for(i=0i<len++i)
if(_str[i]==':')
break
else
j=j*10 + _str[i]-'0'
h = j
/*读分钟*/
j=0
for(++ii<len++i)
if(_str[i]==':')
break
else
j=j*10 + _str[i]-'0'
m = j
/*读秒*/
j=0
for(++ii<len++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())
}