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

时间:2015-01-07 23:15:18

标签: python-2.7 time utc

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

datetime.fromtimestamp()声明如果未提供tz参数,则返回本地日期时间对象。

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

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

从底层平台提取当天的当前时间,无论是本地时间还是UTC?

1 个答案:

答案 0 :(得分:3)

在(当前)CPython中time.time()来电 floattime(NULL),其中称为 _PyTime_gettimeofday_info(),其中称为 pygettimeofday()
其中pygettimeofday()可能会使用GetSystemTimeAsFileTime()clock_gettime(CLOCK_REALTIME)gettimeofday()功能,具体取决于平台。


无关:time.time() returns "seconds since the epoch"。它是Python支持的大多数系统上的POSIX时间(Linux,OS X,Windows)。 POSIX timestamp 1970-01-01T00:00:00Z(Epoch)以来经过的SI秒数。虽然非常接近(从Epoch算起,在0.000003%之内)。它计算非闰SI秒数或UT1(平均太阳能)秒数。

UTC不是相对于TAI,GPS时标的线性时标(见the picture)。由于闰秒(UTC保持在UT1(地球自转)的±0.9秒内),您将无法获得精确的经过的SI秒数。另请参阅Is a day always 86,400 epoch seconds long?

某些操作系统可以配置为使用非POSIX“右”zoneinfo。在这种情况下,time.time()不需要返回POSIX时间戳。 “右”时区计算闰秒,因此“正确”时间戳和POSIX时间戳之间的差异不是恒定的,例如,它将在July 2015 due to the introduction of the positive leap second中增加。

原则上,“epoch”可能与POSIX Epoch不同,但Python doesn't support such systems