time.time()方法为您提供时间戳,该时间戳基本上是自纪元以来的时间(以UTC为单位)。
datetime.fromtimestamp()声明如果未提供tz参数,则返回本地日期时间对象。
我知道tz信息基本上被视为utc的偏移量,以便获得当地时间。
如果是这种情况,则必须从平台中提取utc中的当前时间。
从底层平台提取当天的当前时间,无论是本地时间还是UTC?
答案 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。