我正在寻找一个处理与GPS Time之间的转换的 Java 库。
GPS 时间的纪元为 1980 年 1 月 6 日,并且没有闰秒,因此它与更标准的时间表示不同。以下是来自维基百科的相关描述:
虽然大多数时钟与协调世界时 (UTC) 同步,但卫星上的原子钟设置为 GPS 时间。不同之处在于 GPS 时间没有被校正以匹配地球的自转,因此它不包含闰秒或其他定期添加到 UTC 的校正。GPS 时间在 1980 年设置为与协调世界时 (UTC) 相匹配,但此后出现了分歧。缺少校正意味着 GPS 时间与国际原子时 (TAI) 保持恒定偏移(TAI - GPS = 19 秒)。对板载时钟执行周期性校正以校正相对论效应并使其与地面时钟保持同步。
GPS 导航消息包括 GPS 时间与 UTC 之间的差异,由于 2008 年 12 月 31 日添加到 UTC 的闰秒,截至 2009 年为 15 秒。接收器从 GPS 时间中减去此偏移量以计算 UTC 和特定时区值。直到收到 UTC 偏移消息后,新的 GPS 单元才能显示正确的 UTC 时间。GPS-UTC 偏移字段可以容纳 255 个闰秒(8 位),考虑到地球自转的当前变化率(大约每 18 个月引入一个闰秒),这应该足以持续到大约 2300 年。
与公历的年、月和日格式相反,GPS 日期表示为周数和秒到周数。周数在 C/A 和 P(Y) 导航电文中作为 10 位字段传输,因此每 1,024 周(19.6 年)再次变为零。GPS 第零周开始于 1980 年 1 月 6 日 00:00:00 UTC (00:00:19 TAI),周数在 1999 年 8 月 21 日 23:59:47 UTC (00 :00:19 TAI,1999 年 8 月 22 日)。要确定当前的公历日期,必须向 GPS 接收器提供大致日期(至 3,584 天内)以正确转换 GPS 日期信号。为了解决这个问题,现代化的 GPS 导航消息使用 13 位字段,每 8,192 周(157 年)重复一次,
我宁愿不必自己动手;我在 Joda 时间看不到任何东西表明它可以处理 GPS 编码的日期。有没有办法扩展它?