【发布时间】:2020-12-07 22:26:32
【问题描述】:
我正在从传感器收集 GPS 时间(以 ns 为单位),我正在寻找一种方法将其转换为 C++ 中的 UTC 时间。
我之前在 python 中有一个工作代码。
time_gps = time_gps * 10**(-9) # Converts ns -> s
gps_epoch = pd.datetime(year=1980, month=1, day=6)
delta = pd.to_timedelta(time_gps, unit='s')
time = gps_epoch + delta - pd.to_timedelta(19, unit='s')
使用链接“Using std::chrono / date::gps_clock for converting a double gps timestamp to utc/tai”帮助我弄清楚如何将 GPS 时间转换为 UTC。
uint64_t gps_input_ns = 1281798087485516800;
date::gps_time<std::chrono::nanoseconds> gt_nano{date::round<std::chrono::nanoseconds>(std::chrono::duration<uint64_t, std::nano>{gps_input_ns})};
auto utc_nano = date::clock_cast<date::utc_clock>(gt_nano);
std::cout << utc_nano << " UTC\n";
Output: 2020-08-18 15:01:09.485516800 UTC
我的下一个问题是,如何从变量“utc_nano”中提取日期和时间?我对 chrono 或日期库不是很熟悉,因此在尝试分离日期和时间时遇到了问题。任何帮助将不胜感激。
【问题讨论】:
-
注意重复,但信息丰富:Using std::chrono / date::gps_clock for converting a double gps timestamp to utc/tai。再三考虑,如果您选择走
chrono路线,可能会重复。 -
您能否更具体地了解“get”?您想要的结果是终端上的输出还是字符串?或者你想要分别代表日期和时间的计时类型?换句话说,这是一个格式问题还是一个数据结构问题?
-
@HowardHinnant 我将我的问题编辑得更具体一点,希望它能回答您的问题。我所说的“get”是指从变量“utc_nano”中提取日期和时间。
标签: c++ c++11 gps utc data-conversion