我正在从传感器收集 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')
Run Code Online (Sandbox Code Playgroud)
使用链接“使用 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";
Run Code Online (Sandbox Code Playgroud)
Output: 2020-08-18 15:01:09.485516800 UTC
Run Code Online (Sandbox Code Playgroud)
我的下一个问题是,如何从变量“utc_nano”中提取日期和时间?我对 chrono 或日期库不太熟悉,因此在尝试分离日期和时间时遇到问题。任何帮助将非常感激。