使用struct timespec检索Linux时间

Irf*_*fan 1 c linux posix timespec

有人可以建议我如何使用Linux检索时间吗

结构时间表

类型?自从Epoch以来,这只是给我时间。我可以使用此数据类型获取实际的Linux时间吗?

简介:我正在嵌入式设备上编写记录器实用程序,其时间戳分辨率为毫秒/微秒。源添加时间戳,目标组件将使用该时间戳。

struct stLogItem logitem; //stLogItem has a member, struct timespec ts    
clock_gettime(clk_id, &logitem.ts);
Run Code Online (Sandbox Code Playgroud)

目标组件正在文件/控制台上打印此日志时间戳。但是打印的日期是从Epoch开始的时间,而不是实际的Linux日期。

打印的数据是:1970-01-01 23:30:07.586864475

而Linux日期不同,如下所示:

root @ imh:#日期

UTC 2017年11月14日星期二11:34:12

它不是格式问题。这是关于获取当前Linux时间(以纳秒为单位)的信息。

dbu*_*ush 5

调用后clock_gettimets.tv_sec类型time_t为的会被填充自该时期以来的秒数的时间戳。您可以将其直接传递给localtime

struct timespec ts;    
clock_gettime(clk_id, &ts);
struct tm *my_tm = localtime(&ts.tv_sec);
Run Code Online (Sandbox Code Playgroud)

现在my_tm指向struct tm的时间已细分为年/月/日/小时/分钟/秒,并ts.tv_nsec具有纳秒部分。