1.简介
在C中可以使用gettimeofday()来获取时间
2.函数原型
#include<sys/time.h> int gettimeofday(struct timeval*tv,struct timezone *tz )
3.说明
gettimeofday()会把目前的时间用tv 结构体返回,当地时区的信息则放到tz所指的结构中timeval
4.相关结构体
struct timeval
{
long tv_sec;/*秒*/
long tv_usec;/*微妙*/
};
struct timezone
{
int tz_minuteswest;/*和greenwich 时间差了多少分钟*/
int tz_dsttime;/*type of DST correction*/
}
在gettimeofday()函数中tv或者tz都可以为空。如果为空则就不返回其对应的结构体。函数执行成功后返回0,失败后返回-1,错误代码存于errno中。
5.实例一
#include<stdio.h> #include<sys/time.h> #include<unistd.h> int main() { struct timeval tv; struct timezone tz; gettimeofday(&tv,&tz); printf(“tv_sec:%d\n”,tv.tv_sec); printf(“tv_usec:%d\n”,tv.tv_usec); printf(“tz_minuteswest:%d\n”,tz.tz_minuteswest); printf(“tz_dsttime:%d\n”,tz.tz_dsttime); }
运行结果:
tv_sec:1502078425
tv_usec:920295
tz_minuteswest:-480
tz_dsttime:0
说明:在使用gettimeofday()函数时,第二个参数一般都为空,因为我们一般都只是为了获得当前时间,而不用获得timezone的数值
实例二 测程序的大致执行时间
#include<stdio.h> #include<sys/time.h> #include<unistd.h> int delay(int time) { int i,j; for(i =0;i<time;i++) for(j=0;j<5000;j++) ; } int main() { struct timeval start; struct timeval end; unsigned long diff; gettimeofday(&start,NULL); delay(10); gettimeofday(&end,NULL); diff = 1000000 * (end.tv_sec-start.tv_sec)+ end.tv_usec-start.tv_usec; printf(“thedifference is %ld\n”,diff); return 0; }
本文参考链接:https://www.cnblogs.com/hellokitty2/p/7298490.html