Linux中的epoch時間戳(也稱為Unix時間戳)是指從1970年1月1日00:00:00 UTC(協調世界時)開始經過的秒數
然而,在某些場景下,我們可能需要更高的時間精度。例如,當我們需要測量非常短的時間間隔或者處理高速事件時,以秒為單位的精度可能不夠。在這種情況下,我們可以使用以下方法來提高時間戳的精度:
在Linux系統中,你可以使用gettimeofday()
函數獲取微秒級別的時間戳,或者使用clock_gettime()
函數獲取納秒級別的時間戳。這些函數分別屬于<sys/time.h>
和<time.h>
頭文件。
例如,使用gettimeofday()
函數獲取微秒級別的時間戳:
#include<stdio.h>
#include <sys/time.h>
int main() {
struct timeval tv;
gettimeofday(&tv, NULL);
printf("Seconds: %ld, Microseconds: %ld\n", tv.tv_sec, tv.tv_usec);
return 0;
}
使用clock_gettime()
函數獲取納秒級別的時間戳:
#include<stdio.h>
#include <time.h>
int main() {
struct timespec ts;
clock_gettime(CLOCK_REALTIME, &ts);
printf("Seconds: %ld, Nanoseconds: %ld\n", ts.tv_sec, ts.tv_nsec);
return 0;
}
請注意,不同的系統和編譯器可能會有不同的實現和精度限制。在使用這些函數時,請確保查閱相關文檔以了解其特性和限制。