我试图理解将 gps 时间 ms 转换为 UTC 的逻辑。 GPS 时间已经通过 LIDAR 进行了以毫秒为单位的 utc 校正
我不知道如何确认这是否正确?
time_adj=capture_time + gps_correction = 1.3812925228868198e9
where gps_correction = 1e9
const gps_epoch = DateTime(1980, 1, 6)
unix2datetime(time_adj + datetime2unix(gps_epoch))
结果是 Dates.DateTime("2023-10-14T04:22:02.886")
这是正确的方法吗?
这是正确的,但在从 GPS 转换时还需要考虑闰秒。截至 2023 年,在您计算的日期内,自 1980 年以来历年有 18 个闰秒(12 月 31 日至 1 月 1 日之间的秒数,不按 UTC 计算,而是按 GPS 时间标准计算)。因此,如果这很重要,要获得精确到秒的正确值,您还必须减去 18:
unix2datetime(time_adj + datetime2unix(gps_epoch) - 18)
如果您开始使用的 GPS 日期在 2017 年之前,则会有不同的调整数字。有关更多信息,请参阅示例 https://www.nist.gov/pml/time-and-Frequency-division/time-realization/leap-seconds。