1. 程式人生 > >linux c 時間函數

linux c 時間函數

seconds 時鐘 struct inux eof 設置 times truct read

1、 time() 函數提供了 秒 級的精確度

time_t time(time_t * timer)
函數返回從UTC1970-1-1 0:0:0開始到現在的秒數

2、 struct timespec 提供了 ns 級的精確度

定義如下:

typedef long time_t;
#ifndef _TIMESPEC
#define _TIMESPEC
struct timespec {
  time_t tv_sec; // seconds
  long tv_nsec; // and nanoseconds
};
#endif

對應的操作函數為

int clock_gettime(clockid_t, struct timespec *)

其中 clockid_t 為使用的時鐘,主要有以下四種:

CLOCK_REALTIME 統當前時間,從1970年1.1日算起
CLOCK_MONOTONIC 系統的啟動時間,不能被設置
CLOCK_PROCESS_CPUTIME_ID 本進程運行時間
CLOCK_THREAD_CPUTIME_ID 本線程運行時間

3、struct timeval 提供了 us 級 的精確度

struct timeval {
  time_t tv_sec; // seconds
  long tv_usec; // microseconds
};

對應的操作函數為

int gettimeofday(struct timeval *tv, struct timezone *tz)

其中 timezone 為時區,定義如下:

struct timezone{
  int tz_minuteswest; //miniutes west of Greenwich
  int tz_dsttime; //type of DST correction
};

一般時區填寫為 NULL即可。

linux c 時間函數