時間結構有struct timespec 和struct timeval
在Linux中常用的時間結構有struct timespec 和struct timeval 。
下面是兩個結構的定義
struct timespec
{
__time_t tv_sec; /* Seconds. */
long tv_nsec; /* Nanoseconds. */
};
struct timeval {
time_t tv_sec;
suseconds_t tv_usec;
};
兩者的區別是timespec的第二個參數是納秒數,而timeval的第二個參數是毫秒數。
如何通過這兩個結構獲取系統的當前時間
struct timespec
可以通過 int clock_gettime(clockid_t clk_id, struct timespec *tp)來獲取
參數 clk_id : 檢索和設置的clk_id指定的時鐘時間。可以設置如下:
CLOCK_REALTIME:系統實時時間,隨系統實時時間改變而改變,即從UTC1970-1-1 0:0:0開始計時,如果系統時間被用戶改成其他,則對應的時間相應改變
CLOCK_REALTIME_COARSE:和CLOCK_REALTIME類似,但是執行速度快,精度低
CLOCK_MONOTONIC:從系統啓動這一刻起開始計時,不受系統時間被用戶改變的影響
CLOCK_MONOTONIC_COARSE :和CLOCK_MONOTONIC類似,但是執行速度快,精度低
CLOCK_BOOTTIME:和 CLOCK_MONOTONIC 類似,但是包括了系統休眠的時間。
CLOCK_PROCESS_CPUTIME_ID:本進程到當前代碼系統CPU花費的時間
CLOCK_THREAD_CPUTIME_ID:本線程到當前代碼系統CPU花費的時間
參數:tp 返回時間值
返回值 0成功, 1失敗。
例如
struct timespec ts;
clock_gettime(CLOCK_REALTIME, &ts);
struct timeval
可以通過int gettimeofday(struct timeval *tv, struct timezone *tz);來獲取
參數:struct timeval *tv 將帶回當前的系統時間,從UTC1970-1-1 0:0:0開始計時
struct timezone *tz 帶回當前的時區信息,如果不需要刻意設置爲0
timezone結構描述如下:
struct timezone
{
int tz_minuteswest; //和格林威治 時間差了多少分鐘
int tz_dsttime; //日光節約時間的狀態(夏時制)
};
下面是兩個結構的定義
struct timespec
{
__time_t tv_sec; /* Seconds. */
long tv_nsec; /* Nanoseconds. */
};
struct timeval {
time_t tv_sec;
suseconds_t tv_usec;
};
兩者的區別是timespec的第二個參數是納秒數,而timeval的第二個參數是毫秒數。
如何通過這兩個結構獲取系統的當前時間
struct timespec
可以通過 int clock_gettime(clockid_t clk_id, struct timespec *tp)來獲取
參數 clk_id : 檢索和設置的clk_id指定的時鐘時間。可以設置如下:
CLOCK_REALTIME:系統實時時間,隨系統實時時間改變而改變,即從UTC1970-1-1 0:0:0開始計時,如果系統時間被用戶改成其他,則對應的時間相應改變
CLOCK_REALTIME_COARSE:和CLOCK_REALTIME類似,但是執行速度快,精度低
CLOCK_MONOTONIC:從系統啓動這一刻起開始計時,不受系統時間被用戶改變的影響
CLOCK_MONOTONIC_COARSE :和CLOCK_MONOTONIC類似,但是執行速度快,精度低
CLOCK_BOOTTIME:和 CLOCK_MONOTONIC 類似,但是包括了系統休眠的時間。
CLOCK_PROCESS_CPUTIME_ID:本進程到當前代碼系統CPU花費的時間
CLOCK_THREAD_CPUTIME_ID:本線程到當前代碼系統CPU花費的時間
參數:tp 返回時間值
返回值 0成功, 1失敗。
例如
struct timespec ts;
clock_gettime(CLOCK_REALTIME, &ts);
struct timeval
可以通過int gettimeofday(struct timeval *tv, struct timezone *tz);來獲取
參數:struct timeval *tv 將帶回當前的系統時間,從UTC1970-1-1 0:0:0開始計時
struct timezone *tz 帶回當前的時區信息,如果不需要刻意設置爲0
timezone結構描述如下:
struct timezone
{
int tz_minuteswest; //和格林威治 時間差了多少分鐘
int tz_dsttime; //日光節約時間的狀態(夏時制)
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.