linux 下的时间函数

介绍下linux下的时间函数:

clock_gettime可以精确到微秒,对应的头文件是 time.h

CLOCK_MONOTONIC:表示从系统启动到现在的时间,注意是系统启动到现在的时间,系统启动可以理解为你的电脑的开机时间。

CLOCK_REALTIME:当前电脑显示的时间距离1970年1月1日的时间.

对应的时间结构体,由秒和纳秒组成.

struct timespec {
  __kernel_time_t tv_sec;
  long tv_nsec;
};
//时间操作方面的基础
#include 
#include 
#include 


//linux下的时间函数

int main(int argc,char** argv){

    struct timespec ts;
    clock_gettime(CLOCK_MONOTONIC, &ts);

    std::cout << "sec:" << ts.tv_sec << " nasec:" << ts.tv_nsec << std::endl;

    return 0;
}

然后我们再来看看gettimeofday,对应的头文件是 sys/time.h,时间可以精确到微秒.

对应的时间结构体是:

秒和微秒

struct timeval
  {
    __time_t tv_sec;        /* Seconds.  */
    __suseconds_t tv_usec;  /* Microseconds.  */
  };
   //距离1907年1月1日的时间
    clock_gettime(CLOCK_REALTIME,&ts);
    std::cout << "sec:" << ts.tv_sec << " nasec:" << ts.tv_nsec << std::endl;


    //距离1907年1月1日的时间
    struct timeval tv;
    gettimeofday(&tv,NULL);

    std::cout << "gettimeofday sec:" << tv.tv_sec << " nasec:" << tv.tv_usec << std::endl;

打印发现,这2个的时间其实是非常接近的,主要是精确度的差别,一个是精确到纳秒,一个是精确到微秒而已.

这里写图片描述

第二个是:
clock_gettime(CLOCK_REALTIME,&ts);的结果

第三个是:
gettimeofday(&tv,NULL);的结果,jiegu

大家可以看下,它们的秒是一样的。

你可能感兴趣的:(c/c++/c++,11)