Python的time.time()返回本地或UTC时间戳吗?
Python时间模块中的time.time()
是否返回系统时间或UTC中的时间?
time.time()
函数返回自纪元以来的秒数,以秒为单位。 请注意,“纪元”定义为1970年1月1日开始的UTC。 所以这个时代是用UTC来定义的,并且build立了一个全球时间。 无论你在哪里“秒历”(time.time())同时返回相同的值。
以下是我在电脑上运行的一些示例输出,并将其转换为string。
Python 2.7.3 (default, Apr 24 2012, 00:00:54) [GCC 4.7.0 20120414 (prerelease)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import time >>> ts = time.time() >>> print ts 1355563265.81 >>> import datetime >>> st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S') >>> print st 2012-12-15 01:21:05 >>>
ts
variables是以秒为单位返回的时间。 然后我使用datetime
库将它转换为一个string,使它成为一个人类可读的string。
这是可以在文本文件中使用的时间戳的文本格式。 (问题的标题在过去是不同的,所以对这个答案的介绍已经改变,以澄清如何解释这个问题。[更新2016-01-14])
您可以使用datetime.datetime
的.now()
或.utcnow()
.now()
将时间戳记作为string获取:
>>> import datetime >>> print datetime.datetime.utcnow() 2012-12-15 10:14:51.898000
now
和预期的不一样,否则它们的工作方式是一样的:
>>> print datetime.datetime.now() 2012-12-15 11:15:09.205000
您可以显式地将时间戳显示为string:
>>> str(datetime.datetime.now()) '2012-12-15 11:15:24.984000'
或者,您可以更明确地按照您喜欢的方式格式化时间戳:
>>> datetime.datetime.now().strftime("%A, %d. %B %Y %I:%M%p") 'Saturday, 15. December 2012 11:19AM'
如果您需要ISO格式,请使用对象的.isoformat()
方法:
>>> datetime.datetime.now().isoformat() '2013-11-18T08:18:31.809000'
您可以将这些variables用于计算和打印,而无需转换。
>>> ts = datetime.datetime.now() >>> tf = datetime.datetime.now() >>> te = tf - ts >>> print ts 2015-04-21 12:02:19.209915 >>> print tf 2015-04-21 12:02:30.449895 >>> print te 0:00:11.239980
基于#squiguy的答案,为了得到一个真正的时间戳,我会input从浮动。
>>> import time >>> ts = int(time.time()) >>> print(ts) 1389177318
至less这是这个概念。
答案可能不是或两者兼而有之。
-
两者都不是:
time.time()
大致返回自Epoch以来经过的秒数。 结果不依赖于时区,所以它既不是UTC也不是本地时间。 这是POSIX定义为“从时代起秒” 。 -
两个:
time.time()
不要求你的系统时钟是同步的,所以它反映了它的值(尽pipe它与本地时区没有任何关系)。 不同的电脑可能同时得到不同的结果。 另一方面,如果您的计算机时间是同步的,那么很容易从时间戳得到UTC时间(如果我们忽略闰秒):from datetime import datetime utc_dt = datetime.utcfromtimestamp(timestamp)
关于如何从各个Python版本的UTC时间获取时间戳,请参阅如何根据UTC将时间转换为自时代以来的秒数?
在特定的时区里没有这样的“时代”。 时代被定义为一个特定的时刻,所以如果你改变时区,时间本身也会改变。 具体来说,这个时间是Jan 1 1970 00:00:00 UTC
。 所以time.time()
返回自纪元以来的秒数。
我最终解决了:
>>> import time >>> time.mktime(time.gmtime()) 1509467455.0