我需要在UTC时间生成一个UNIX时间戳,所以我time.time()用来生成它.
我还需要做其他任何事情,还是自动生成UTC时间戳?
aba*_*ert 21
从技术上讲,time.time()没有指定,实际上,至少在CPython中,它返回基础标准C库time函数使用的任何格式的时间戳.
C标准(不是免费提供)并没有说明这是否是GMT,POSIX标准也没有.它只是说:
该
time()函数应返回自Epoch以来以秒为单位的时间值.
...没有说任何关于时区的事情,除了你可以将它传递给localtime或gmtime在本地或GMT时区中获得"分解时间".
所以,这是特定于平台的.一个平台可以返回任何它想做的time,只要它在一定程度上使得这样做,localtime和gmtime正常工作.
话虽这么说,它通常是GMT - 或者更确切地说,是UTC(Windows),或UTC-except-for-leap-seconds(大多数其他平台).例如,FreeBSD说:
该
time()函数返回自0小时0分0秒1970年1月1日协调世界时以来的时间值,不包括闰秒.
OS X和大多数其他*BSD具有相同的联机帮助页,Windows和linux/glibc也专门返回UTC(有或没有闰秒)等.
此外,Python文档说:
要了解这个时代是什么,请看一下
gmtime(0).
与定义放在一起的time和gmtime,这将是一个平台,比格林尼治时间返回本地时间戳更多的工作.(话虽这么说,这句话不可能都是权威的,因为对于任何POSIX平台来说实际上并不是真的,这要归功于闰秒.)
time.time()返回自纪元以来的秒数,因此它不定义正在使用的时间标准或区域.
转换为时间标准使用:
time.localtime([secs]) - 操作系统定义的本地时间time.gmtime([secs]) - 世界标准时间 他们都返回了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)