欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

linux 下的时间函数

程序员文章站 2022-03-01 15:11:08
...

介绍下linux下的时间函数:

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

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

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

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

struct timespec {
  __kernel_time_t tv_sec;
  long tv_nsec;
};
//时间操作方面的基础
#include <stdint.h>
#include <time.h>
#include <iostream>


//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个的时间其实是非常接近的,主要是精确度的差别,一个是精确到纳秒,一个是精确到微秒而已.

linux 下的时间函数

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

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

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