我有一個在 Ubuntu 環境中運行的資料采集程式。當滿足資料觸發器時,程式會創建一個包含資料的新檔案,檔案名是滿足觸發器時的時間戳。現在我正在使用 ctime 生成時間戳,并且程式可以作業:
#include <time.h>
time_t rawtime; // Generating time stamp
time(&rawtime);
sprintf(buffer, "/usb/%s.txt", ctime(&rawtime));
創建一個名為Fri_May_27_17_58_38_2022.txt
是否可以使用相同的方法來獲得更精確的時間戳到毫秒?
uj5u.com熱心網友回復:
在大多數平臺上,您可以獲取( )的第二部分并使用或將其分解為其組件,只留下納秒部分。struct timespectv_sectimespec_getlocaltimegmtime
#include <time.h>
#include <stdio.h>
int main() {
struct timespec ts;
timespec_get(&ts, TIME_UTC);
time_t seconds = ts.tv_sec;
printf("%s", ctime(&seconds)); // just for comparison
struct tm *t = localtime(&seconds);
printf("d-d-dTd:d:d. ld\n",
t->tm_year 1900, t->tm_mon 1, t->tm_mday,
t->tm_hour, t->tm_min, t->tm_sec,
ts.tv_nsec
);
}
可能的輸出:
Fri May 27 18:36:14 2022
2022-05-27T18:36:14.513916611
如果您只需要毫秒:
printf("d-d-dTd:d:d.ld\n",
t->tm_year 1900, t->tm_mon 1, t->tm_mday,
t->tm_hour, t->tm_min, t->tm_sec,
ts.tv_nsec / 1000000
);
可能的輸出:
Fri May 27 18:36:14 2022
2022-05-27T18:36:14.513
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/483921.html
下一篇:索引在datetime64[ns]但仍然得到TypeError:OnlyvalidwithDatetimeIndex
