time.time()方法提供了时间戳,即自纪元以来经过的时间(在UTC中)。
datetime.fromtimestamp()指出,如果未提供tz参数,则返回本地datetime对象。
我知道tz信息基本上被视为与UTC的偏移量,以获取本地时间。
如果是这样,那么当前的UTC时间必须从平台中提取出来。
如何从底层平台中提取当天的当前时间(无论是本地时间还是UTC时间)?
time.time()方法提供了时间戳,即自纪元以来经过的时间(在UTC中)。
datetime.fromtimestamp()指出,如果未提供tz参数,则返回本地datetime对象。
我知道tz信息基本上被视为与UTC的偏移量,以获取本地时间。
如果是这样,那么当前的UTC时间必须从平台中提取出来。
如何从底层平台中提取当天的当前时间(无论是本地时间还是UTC时间)?
在当前的CPython中,time.time()
调用
floattime(NULL)
,该函数调用
_PyTime_gettimeofday_info()
,该函数又调用
pygettimeofday()
,
其中pygettimeofday()
可能会使用GetSystemTimeAsFileTime()
、clock_gettime(CLOCK_REALTIME)
、gettimeofday()
等函数,具体取决于平台。
无关:time.time()
返回“自纪元以来的秒数”。在大多数支持Python的系统(Linux、OS X、Windows)上,它是POSIX时间。 POSIX时间戳不是自1970年01月01日00:00:00Z(Epoch)以来经过的SI秒数。虽然非常接近(从Epoch开始计算误差不超过0.000003%)。它计算的是非闰秒SI秒数或UT1(平太阳)秒数。
UTC相对于TAI、GPS时间轴不是线性的时间刻度(请参见图片)。由于闰秒,您将无法获得准确的经过SI秒数(UTC与UT1(地球自转)之间保持±0.9秒)。另请参阅一天总是86000个epoch秒吗?
一些操作系统可以配置为使用非POSIX的“right”区域信息。在这种情况下,不要求time.time()
返回POSIX时间戳。 "right"时区计算闰秒,因此“right”时间戳和POSIX时间戳之间的差异不是恒定的,例如,在2015年7月由于引入了正闰秒,它将增加。