【发布时间】:2012-02-10 12:37:02
【问题描述】:
我有 UTC 秒格式的时间。任何人都可以帮助如何将这些数字转换为 GPS 正常时间戳的时间(dd-mm-yyyy hh:mm:ss)?我需要一个 C 代码或算法。
【问题讨论】:
我有 UTC 秒格式的时间。任何人都可以帮助如何将这些数字转换为 GPS 正常时间戳的时间(dd-mm-yyyy hh:mm:ss)?我需要一个 C 代码或算法。
【问题讨论】:
有关算法,请查看本站源代码:UTC Converter
对于 c++ 中的内置函数,请检查 here - 特别是 ctime()
【讨论】:
更新(2017 年 6 月):目前为 18 闰秒。
GPS 时间只是 UTC 时间,但没有leap seconds。在撰写本文时,自 GPS 纪元(1980 年 1 月 6 日 @ 00:00:00)以来已经有 15 个闰秒,所以如果它是 2012/02/13 @ 12:00:00(UTC),那么它是 2012/ GPS 时间 02/13 @ 12:00:15。如果您想在其他时间进行正确的转换,则必须考虑每个闰秒生效的时间。
您可以通过以下几种不同的“权威”来源计算当前偏移量:
http://www.ietf.org/timezones/data/leap-seconds.list -- 从2571782400 20 # 1 Jul 1981 行开始计算行数。或者从 2017 年 5 月的列表中的最后一个数字中减去 19(例如,37-19 = 18)。
https://www.nist.gov/pml/time-and-frequency-division/atomic-standards/leap-second-and-ut1-utc-information -- 计算插入的闰秒数(来自Leap Seconds Inserted into the UTC Time Scale 部分),从1981-06-30 条目开始(包括)。
【讨论】:
有一个 Javascript 库可以与 unixtime 相互转换。该库位于
http://www.lsc-group.phys.uwm.edu/~kline/gpstime/
无论您使用什么算法,都必须在宣布新的闰秒时对其进行更新。
【讨论】: