Python的time.time()是否以UTC格式返回时间戳?

inc*_*to2 16 python time utc

我需要在UTC时间生成一个UNIX时间戳,所以我time.time()用来生成它.
我还需要做其他任何事情,还是自动生成UTC时间戳?

aba*_*ert 21

从技术上讲,time.time()没有指定,实际上,至少在CPython中,它返回基础标准C库time函数使用的任何格式的时间戳.

C标准(不是免费提供)并没有说明这是否是GMT,POSIX标准也没有.它只是说:

time()函数应返回自Epoch以来以秒为单位的时间值.

...没有说任何关于时区的事情,除了你可以将它传递给localtimegmtime在本地或GMT时区中获得"分解时间".

所以,这是特定于平台的.一个平台可以返回任何它想做的time,只要它在一定程度上使得这样做,localtimegmtime正常工作.

话虽这么说,它通常是GMT - 或者更确切地说,是UTC(Windows),或UTC-except-for-leap-seconds(大多数其他平台).例如,FreeBSD说:

time()函数返回自0小时0分0秒1970年1月1日协调世界时以来的时间值,不包括闰秒.

OS X和大多数其他*BSD具有相同的联机帮助页,Windowslinux/glibc也专门返回UTC(有或没有闰秒)等.

此外,Python文档说:

要了解这个时代是什么,请看一下gmtime(0).

与定义放在一起的timegmtime,这将是一个平台,比格林尼治时间返回本地时间戳更多的工作.(话虽这么说,这句话不可能都是权威的,因为对于任何POSIX平台来说实际上并不是真的,这要归功于闰秒.)


tim*_*mss 8

time.time()返回自纪元以来的秒数,因此它不定义正在使用的时间标准或区域.

转换为时间标准使用:

他们都返回了time.struct_time.

>>> t = time.time()
>>> time.localtime(t)
time.struct_time(tm_year=2013, tm_mon=5, tm_mday=15, tm_hour=2, tm_min=41, tm_sec=49, tm_wday=2, tm_yday=135, tm_isdst=1)
>>> time.gmtime(t)
time.struct_time(tm_year=2013, tm_mon=5, tm_mday=15, tm_hour=0, tm_min=41, tm_sec=49, tm_wday=2, tm_yday=135, tm_isdst=0)
Run Code Online (Sandbox Code Playgroud)