How does python's time.time() method work?
time.time()方法为您提供时间戳,该时间戳基本上是自epoch以来经过的时间(以UTC为单位)。
fromTimestamp()声明,如果未提供TZ参数,则返回本地datetime对象。
我知道TZ信息基本上被视为与UTC的偏移量,以便获得当地时间。
如果是这种情况,则必须从平台中提取当前的UTC时间。
一天中的当前时间(无论是本地时间还是UTC时间)是如何从基础平台中提取的?
- 我假设它是一个操作系统函数…
- @如果手动调整系统时钟会发生什么?
- @然后函数将返回调整后的时间。
- 你会得到调整过的系统时钟…(你为什么认为你会得到其他东西?)操作系统控制设置时间和时区。python/c只是读取这些值。一般来说,系统无法/根本无法知道其位置。此外,您不能纯粹根据经度计算时区(时区不是很规则)。
- 这听起来可能很愚蠢,但操作系统是否预先配置了这些值?我假设需要执行某种同步。
- 是的,操作系统附带一个时区数据库,当时区(和DST规则)更改时会更新该数据库。
- 太神了。谢谢!
- @法特海德IANA.org/time-zones(时区数据库现在由IANA维护)。
- @jorn:os可以使用"right"zoneinfo和sync。使用GPS NTP服务器,也就是说,它甚至可以使用非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不支持这样的系统。