【发布时间】:2021-01-03 16:04:36
【问题描述】:
Unix 时间戳由:
int(time.time())
给出自 1970 年 1 月 1 日以来经过的秒数,没有闰秒。
只是出于好奇,如何获取自此日期以来经过的秒数 true,包括闰秒? (即时间轴上这两个事件之间的距离)
注意事项:
-
示例:时间戳范围
867715190.000 .. 867715202.000表示 13 秒的“实际持续时间”(用计时器测量),因为 1997 年的这一天有一个闰秒,而 Unix 时间戳只有 增加了 +12。 -
示例 2:从 1970 年 1 月 1 日到 2020 年 1 月 1 日(这 50 年间隔中有 12 个闰年)之间经过的实际时间是
(365*50+12)*24*3600 + number_leap_seconds而不是 @ 987654326@。但是我们看到datetime.datetime.utcfromtimestamp((365*50+12)*24*3600)是2020-01-01 00:00:00,所以显然没有考虑闰秒。 -
链接到What does python return on the leap second 和Unix time and leap seconds
【问题讨论】:
-
根据我对您显示的两个链接的阅读,您确实得到了真实的秒数。只是从这个到日期的转换搞砸了(因为其中一些秒被指定为闰秒)。
-
请参阅编辑问题@AryaMcCarthy 中的“示例 2”,这表明没有考虑闰秒。 Unix 时间戳是时间的表示(在闰秒的情况下不唯一!),但不是经过时间的实际度量。
标签: python datetime time leap-second