gpt4 book ai didi

c - 使用 struct timespec 检索 Linux 时间

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:17:34 26 4
gpt4 key购买 nike

有人可以建议我如何使用

检索 linux 时间

struct timespec ts

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

简要背景:我正在嵌入式设备上编写一个记录器实用程序,时间戳分辨率为毫秒/微秒。源添加由目标组件使用的时间戳。

struct stLogItem logitem; //stLogItem has a member, struct timespec ts    
clock_gettime(clk_id, &logitem.ts);

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

The printed data is: 1970-01-01 23:30:07.586864475

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

root@imh:# date

Tue Nov 14 11:34:12 UTC 2017

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

最佳答案

调用 clock_gettime 后,类型为 time_tts.tv_sec 将填充自纪元以来的秒数时间戳。您可以将其直接传递给 localtime:

struct timespec ts;    
clock_gettime(clk_id, &ts);
struct tm *my_tm = localtime(&ts.tv_sec);

现在 my_tm 指向一个 struct tm ,它把时间分解为年/月/日/时/分/秒,和 ts.tv_nsec 具有纳秒部分。

关于c - 使用 struct timespec 检索 Linux 时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47532135/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com