python的time.time()方法如何工作?

How does python's time.time() method work?

time.time()方法为您提供时间戳,该时间戳基本上是自epoch以来经过的时间(以UTC为单位)。

fromTimestamp()声明,如果未提供TZ参数,则返回本地datetime对象。

我知道TZ信息基本上被视为与UTC的偏移量,以便获得当地时间。

如果是这种情况,则必须从平台中提取当前的UTC时间。

一天中的当前时间(无论是本地时间还是UTC时间)是如何从基础平台中提取的?


在(当前)cpython time.time()呼叫中floattime(NULL),它调用_PyTime_gettimeofday_info(),调用埃多克斯1〔3〕其中pygettimeofday()可根据平台使用GetSystemTimeAsFileTime()clock_gettime(CLOCK_REALTIME)gettimeofday()功能。

无关:time.time()返回"自纪元以来的秒数"。在大多数Python支持的系统(Linux、OS X、Windows)上,这是POSIX时间。posix timestamp不是自EDOCX1(epoch)以来经过的si秒数。虽然非常接近(从新纪元算起0.000003%以内)。它计算非跳跃SI秒数或UT1(平均太阳)秒数。

UTC不是相对于TAI、GPS时间刻度的线性时间刻度(参见图)。由于闰秒(UTC保持在UT1(地球自转)的±0.9秒内),您将无法获得确切的经过的SI秒。还有,一天总有86400个历元秒长吗?

一些操作系统可以配置为使用非posix"right"zoneinfo。在这种情况下,不需要time.time()返回posix时间戳。"右"时区计算闰秒,因此"右"时间戳和posix时间戳之间的差异不是恒定的,例如,由于引入了正闰秒,它将在2015年7月增加。

原则上,"epoch"可能与posix epoch不同,尽管python不支持这样的系统。