#include
int gettimeofday(struct timeval*tv, struct timezone *tz);
其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果:
struct timezone{
int tz_minuteswest;/*格林威治时间往西方的时差*/
int tz_dsttime;/*DST 时间的修正方式*/
}
timezone 参数若不使用则传入NULL即可。
而结构体timeval的定义为:
struct timeval{
long int tv_sec; // 秒数
long int tv_usec; // 微秒数
}
它获得的时间精确到微秒(1e-6 s)量级。在一段代码前后分别使用gettimeofday可以计算代码执行时间:
struct timeval tv_begin, tv_end;
gettimeofday(&tv_begin, NULL);
foo();
gettimeofday(&tv_end, NULL);
输出精切到微秒的时间格式
#include
#include
#include
#include
/*
取当前时间,精确到微秒 ;
*/
int main()
{
struct timeval tv;
struct tm * time_ptr;
memset(&tv, 0, sizeof(timeval));
gettimeofday(&tv, NULL);
time_ptr = localtime(&tv.tv_sec);
printf("%d-%02d-%02d %02d:%02d:%02d.%.04d\n",
time_ptr->tm_year + 1900,
time_ptr->tm_mon + 1,
time_ptr->tm_mday,
time_ptr->tm_hour,
time_ptr->tm_min,
time_ptr->tm_sec,
tv.tv_usec);
return 1;
}