Python time模块中的time.time()返回的是系统时间还是UTC时间?


当前回答

根据来自#squiguy的答案,为了获得一个真实的时间戳,我将从float类型转换它。

>>> import time
>>> ts = int(time.time())
>>> print(ts)
1389177318

至少这是一个概念。

其他回答

Time.time()返回Unix时间戳。 您可以使用datetime库获取本地时间或UTC时间。

import datetime

local_time = datetime.datetime.now()
print(local_time.strftime('%Y%m%d %H%M%S'))

utc_time = datetime.datetime.utcnow() 
print(utc_time.strftime('%Y%m%d %H%M%S'))

时间戳总是utc的时间,但是当你调用datetime.datetime.fromtimestamp时,它会返回你的本地时区的时间对应于这个时间戳,所以结果取决于你的语言环境。

>>> import time, datetime

>>> time.time()
1564494136.0434234

>>> datetime.datetime.now()
datetime.datetime(2019, 7, 30, 16, 42, 3, 899179)
>>> datetime.datetime.fromtimestamp(time.time())
datetime.datetime(2019, 7, 30, 16, 43, 12, 4610)

存在不同行为的漂亮库箭头。在同样的情况下,它返回UTC时区的时间对象。

>>> import arrow
>>> arrow.now()
<Arrow [2019-07-30T16:43:27.868760+03:00]>
>>> arrow.get(time.time())
<Arrow [2019-07-30T13:43:56.565342+00:00]>

答案可能是两者都不是,也可能都是。

neither: time.time() returns approximately the number of seconds elapsed since the Epoch. The result doesn't depend on timezone so it is neither UTC nor local time. Here's POSIX defintion for "Seconds Since the Epoch". both: time.time() doesn't require your system's clock to be synchronized so it reflects its value (though it has nothing to do with local timezone). Different computers may get different results at the same time. On the other hand if your computer time is synchronized then it is easy to get UTC time from the timestamp (if we ignore leap seconds): from datetime import datetime utc_dt = datetime.utcfromtimestamp(timestamp)

有关如何在各种Python版本中从UTC时间获取时间戳,请参阅如何根据UTC获取从epoch开始转换为秒的日期?

根据来自#squiguy的答案,为了获得一个真实的时间戳,我将从float类型转换它。

>>> import time
>>> ts = int(time.time())
>>> print(ts)
1389177318

至少这是一个概念。

在特定的时区里没有所谓的“epoch”。epoch被定义为一个特定的时间点,因此如果您改变了时区,时间本身也会改变。具体来说,这个时间是1970年1月1日00:00:00 UTC。因此,time.time()返回自epoch以来的秒数。