我正在从传感器收集GPS时间(以纳秒为单位),希望找到一种在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')
使用链接 "使用 std::chrono / date::gps_clock 将双精度 GPS 时间戳转换为 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或日期库并不很熟悉,因此在尝试分离日期和时间时遇到了问题。非常感谢任何帮助。
chrono
方法,则可能会出现重复。 - user4581301