自 01/01/1970 以来经过了多少秒,包括闰秒?

How many seconds elapsed since 01/01/1970, leap-seconds included?

给出的 Unix 时间戳:

int(time.time())

给出自 01/01/1970 以来经过的秒数,没有闰秒。

出于好奇,如何获得自该日期以来经过的 true 秒数,包括闰秒? (即这两个事件在时间轴上的距离)

备注:

自 1972 年 1 月 1 日以来任意两个 UTC 时间戳之间的 SI 秒数需要访问 UTC 中引入的闰秒列表。此列表作为 IANA tzdata 分发的一部分提供,也可以从其他来源获得。

需要注意,因为所谓的 1970-01-01 和 1972-01-01 之间的 SI 秒数是 2x365x24x60x60 + 1.999918 SI 秒,因为在 1970 年,官方时间不是由铯原子决定的,而是由实际上测量的是地球的自转,所以官方秒数是指太阳秒而不是 SI 秒。

我 运行 遇到了同样的问题,您可以使用“正确的”时间来解决它:

import os; import time; import datetime;
tai_epoch=datetime.datetime(1970, 1, 1, 0, 0, 10)
timezone=time.tzname[0];os.environ['TZ']='right/UTC';time.tzset()
now=datetime.datetime.utcnow()
leap_seconds=int(now.timestamp())-int((now-tai_epoch).total_seconds())
right_time=int(now.timestamp())+leap_seconds
os.environ['TZ']=timezone;time.tzset()

您可以将其与常规 UTC 时间进行比较,如下所示:

utc_time=int(time.time())
print(right_time-utc_time)

目前,这会给你 37