我有UTC秒格式的时间。任何人都可以协助如何将这些数字转换为GPS 正常时间戳的时间(dd-mm-yyyy hh:mm:ss)?我需要一个C代码,或者可能是算法。
答案 0 :(得分:7)
更新(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
条目开始。
答案 1 :(得分:1)
有一个Javascript库可以转换为unixtime和从unixtime转换。该库可在
获得http://www.lsc-group.phys.uwm.edu/~kline/gpstime/
无论使用何种算法,都必须在宣布新的闰秒时更新它。
答案 2 :(得分:0)
对于算法检查此网站源代码:UTC Converter
用于c ++中的内置函数检查here - 尤其是ctime()