真实时间与时间间隔-gettimeofday,

来源:互联网 发布:数控车床螺纹编程g92 编辑:程序博客网 时间:2024/06/06 03:28
使用C语言编写程序需要获得当前精确时间(1970年1月1日到现在的时间),或者为执行计时,可以使用gettimeofday()函数。
 
#include <sys/time.h>
int gettimeofday(struct timeval*tv, struct timezone *tz);
其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果:
 
timezone 结构定义:
struct timezone{
int tz_minuteswest;/*格林威治时间往西方的时差*/
int tz_dsttime;/*DST 时间的修正方式*/
}

DST_NONE :不使用
DST_USA :美国
DST_AUST :澳洲
DST_WET :西欧
DST_MET :中欧
DST_EET :东欧
DST_CAN :加拿大
DST_GB :大不列颠
DST_RUM :罗马尼亚
DST_TUR :土耳其
DST_AUSTALT :澳洲(1986年以后)
 
timezone 参数若不使用则传入NULL即可。
而结构体timeval的定义为:
struct timeval{
long int tv_sec; // 秒数
long int tv_usec; // 微秒数
}
它获得的时间精确到微秒(10的6次方)量级。在一段代码前后分别使用gettimeofday可以计算代码执行时间:
上述两个结构都定义在/usr/include/sys/time.h
 
 
//
struct timeval tv_begin, tv_end;
gettimeofday(&tv_begin, NULL);
foo();
gettimeofday(&tv_end, NULL);
 
 
////////////////////////////////////////////////////////
一下是获取真实时间
GetTime(struct tm *lptime)
{
    time_t lTime;
    time(&lTime);//获取秒数-从19700101 000000开始
    
    struct tm  tf;
    localtime_r(&lTime, &tf);
   
    lpTime->wYear     = tf.tm_year+1900;
    lpTime->wMonth    = tf.tm_mon+1;
    lpTime->wDayOfWeek= tf.tm_wday;
    lpTime->wDay      = tf.tm_mday;
    lpTime->wHour     = tf.tm_hour;
    lpTime->wMinute   = tf.tm_min;
    lpTime->wSecond   = tf.tm_sec;
    lpTime->wMilliseconds = 0;
}
 
 
 
 
 
 
 
 
 
 
0 0
原创粉丝点击