在python中如何从gps epoch中获取当前日期的闰秒

2024-09-27 17:41:23 发布

您现在位置:Python中文网/ 问答频道 /正文

据我所知,目前在python中没有函数可以从gps epoch获取当前日期的闰秒。正在调查/开发的适当补丁:leap seconds path in datetime

你能告诉我怎样获得闰秒的最佳方法吗?我找到了解决办法:

def getLeapSec(Tgps):
  daysFromGPSEpoch = timedelta(seconds=Tgps).days
  tableLeapSec = ([
    [0,  542,  907, 1272, 2003, 2917, 3648, 4013, 4560, 4925, 5290, 5839, 6386, 6935, 9492, 10588, 11865, 12960],
    [0,    1,    2,    3,    4,    5,    6,    7,    8,    9,   10,   11,   12,   13,   14,    15,    16,    17]
                 ])

  for i in range(1, len(tableLeapSec[0])):
    if daysFromGPSEpoch < tableLeapSec[0][i]:
      return tableLeapSec[1][i-1]

示例:

^{pr2}$

Tags: path方法函数indatetimedefleapgps
1条回答
网友
1楼 · 发布于 2024-09-27 17:41:23

如果您有权访问系统上的the up-to-date tzfile,则可以使用^{} module

>>> from datetime import datetime, timedelta
>>> import leapseconds
>>> Tgps = 1092121243.0
>>> gps_time = datetime(1980, 1, 6) + timedelta(seconds=Tgps)
>>> leapseconds.dTAI_UTC_from_tai(leapseconds.gps_to_tai(gps_time))
datetime.timedelta(0, 35)

主要优点是tzdata包每年由系统自动更新几次(引入闰秒的频率更高)。您的代码将使用新数据,而无需更改它。在

否则,作为后备,您可以硬编码leapseconds.leapseconds()调用的结果:

^{pr2}$

在本例中引入下一个闰秒时,必须手动更新列表。在

闰秒更新的权威源是由同时提供TAI-UTC data since 1961的IER发布的Bulletin C。在

你可以每半年ping一次IESR(例如1月、7月),以便在下一个闰秒被调度时使用^{}以编程方式找出答案。在

相关问题 更多 >

    热门问题