小编tom*_*mpa的帖子

使用 std::chrono / date::gps_clock 将双 gps 时间戳转换为 utc/tai

我从 GPS 设备的 gps_data 结构中获取一个双精度时间戳。

我想将此 GPS 时间戳转换为 UTC 和 TAI 时间,简单如下:

void handle_gps_timestamp(double timestamp) 
{
    double utc = utc_from_gps(timestamp);
    double tai = tai_from_gps(timestamp);
    do_stuff(gps, utc, tai);
}
Run Code Online (Sandbox Code Playgroud)

幸运的是,我发现Howard Hinnant 的日期和时区库(建议用于 C++20)似乎提供了这个确切的功能。不幸的是,至少从我所见,date/tz/chrono 库没有允许这种简单用法的方便方法。

我必须首先以某种方式将我的双重“转移”为已知的计时/日期类型。但是好吧,因为我理解了整体概念,即时间点被定义为一个时钟纪元之后(或之前)的持续时间,我认为这是一个漂亮的模型。

假设

我应该能够很容易地转换该模型以适应我的问题,对吗?

就我而言,我有一个时间戳,它是一个时间点,指定为自 gps 纪元以来的持续时间。现在,应该有一个类类型的时钟来为我抽象和处理所有这些,我想。是的!有一个 date::gps_clock 和一个 date::gps_time,它们肯定可以完成这项工作。

问题

我不能让它为我工作。我确定解决方案很简单。

有人可以帮助我,展示我应该如何使用适用于我的问题的霍华德日期库吗?

c++ gps date utc c++-chrono

4
推荐指数
1
解决办法
1813
查看次数

标签 统计

c++ ×1

c++-chrono ×1

date ×1

gps ×1

utc ×1