Skip to main content
 首页 » 操作系统

Linux 时间相关函数

2022年07月19日31oomusou

 

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