【问题标题】:how to convert a timestamp_t to a real time?如何将时间戳转换为实时?
【发布时间】:2014-12-29 19:20:54
【问题描述】:

我见过很多使用 time_t 的例子,但 timestamp_t 让我感到困惑...... 我正在做一项任务,我们需要打印出 GPS 数据,并且 gps 设备返回一个类型 timestamp_t 的时间戳和它的纪元时间。我试过使用 gmtime() 来转换和 strftime() 但没有任何东西适用于那种类型。它一直告诉我,如果我尝试使用它们,它就无法将 timestamp_t* 转换为 time_t。

有人知道任何可以将 timestamp_t 转换为人类可读时间的函数吗?

谢谢

【问题讨论】:

  • 您从哪个库获取 timestamp_t?
  • 您需要像 D'Nabre 所说的那样正确描述 timestamp_t,我建议您查看相应库的文档
  • 如果它是来自 gpsd 的 timestamp_t,它只是一个 time_t 在 UTC 中表示为双精度(是的,这太疯狂了,但它就是它记录的内容)。应该是到 time_t 的简单(如果不准确)转换,并且从那里开始很容易。
  • 我从 gpsd 获取时间戳,是的,这似乎很有效!

标签: c++ c gps raspberry-pi gpsd


【解决方案1】:

此站点enter link description here 表示它是带有小数部分的unix 时间戳。假设这意味着小数左边的数字是自 1970 年 1 月 1 日以来的秒数,并且“小数”部分是一秒的小数部分,您可以去掉整数部分并使用 ctime():

#include <time.h>

time_t seconds;
timestamp_t ts = 1415000462.999000;

seconds = (time_t) timestamp_t;

printf("Time: %s\n", ctime(&seconds));

这当然会忽略秒的小数部分,但是 你应该能够轻松处理。

【讨论】:

  • 使用你的例子似乎使程序挂在 ctime() 调用上
猜你喜欢
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-07
  • 1970-01-01
  • 2022-07-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多