Does Python's time.time() return the local or UTC timestamp?
python时间模块中的time.time()是否返回系统时间或UTC时间?
- 时间戳没有时区。它们代表了自那个时代以来的秒数。纪元是一个不依赖于时区的特定时间点。
- @jwg:常用的posix时间戳不计算闰秒,因此它们不是"自纪元以来经过的(si)秒数"(它们很接近)。
- 我不认为这是一个准确的反对意见@j.f.sebastian。闰秒不是"自纪元以来经过的秒"。它们是时钟记录的时间表示形式中的变化,与经过的秒数不对应。
- @jwg"它们"在我的评论(以及你的第一条评论)中显然是"时间戳",而不是"闰秒"(否则没有意义)。
- @J.F.Sebastian很抱歉弄混了。闰秒不是"经过的秒"。因此,时间戳(即"已用秒数")不应包括闰秒。
- JWG错了。你不能删除物理时间。posix timestamp不是经过的si秒数。例如:纽约的"2016年12月31日下午6:59:59"和"2016年12月31日下午7:00:01"之间的时间间隔为3秒,但相应的posix时间戳的差仅为2秒(不计算闰秒)。
- @J.F.塞巴斯蒂安,你说得对。我错了。尽管我认为时区的观点仍然是合理的。
在time.time()函数时返回的数秒,因为硬件的单,为秒。值得注意的是"单"定义为开始,一月一次,20世纪70年代在UTC时间。单是这么定义的术语在大学establishes UTC和一个全球的时刻。好吧,你是物的"秒过去单"(time.time())时返回同样的值,在同一时刻。 </P >
这里是一些样本输出I Ra是我的电脑,它转换到一个字符串为好。 </P >
1 2 3 4 5 6 7 8 9 10 11 12
| 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是可变的时returned在秒。我然后转换它的一个字符串的使用datetime图书馆制作它的一个字符串,这是人类可读的。 </P >
- 非常感谢……真的很有帮助。我以为它会在UTC返回,但不确定。谢谢
- 当datetime基本上给了你时间戳时,为什么我们应该使用cx1(0)。只需去掉毫秒-str(datetime.datetime.now()).split('.')[0]。
- time.time()文件
- @亚历克西斯的Unix时代在这里定义得相当清楚。它甚至还指出了一个python示例。我不理解你的评论。
- @老实说,我不记得是什么让我这么说的。我一定读错了一些东西,我在努力寻找为什么一些测试失败,而我在法国和美国之间移动,最终发现这个问题是因为夏令时,使这一周在一年中的这段时间更长。很抱歉,谢谢你指出这一点。
- 谢谢,很好的片段
- 它不是"UTC中的秒"。time.time()返回的时间戳不在任何时区内。""自纪元以来的秒数"是一个术语;它不是自某个时间点(纪元)以来经过的秒数。您可以轻松地将其转换为本地时间(使用TZ数据库)和/或UTC时区。顺便说一句,如果你把.strftime()放下来,结果(几乎)是相同的(+/-微秒)。
- 很棒的片段。我发现自己不时地引用这篇文章。
- 是datetime.utcfromtimestamp(ts),不是datetime.fromtimestamp(ts)。
- @亚历克西斯是绝对正确的:使用time.gmtime()获取UTC,注释很容易理解:datetime.fromtimestamp返回本地时间,而不是UTC时间
- @Hussain int(datetime.datetime.now())应该比转换为字符串以去掉小数部分快得多。
- 刚刚测试过,time.time()没有给出UTC时间,它给出了我的本地区域时间
- 只需获取时间戳import time并运行str(time.time()).split(".")[0]。修复@hussain注释
这是对全文的一个时间戳的形态,可以用在你的文本文件。(the title的问题是不同的,在过去,这么介绍到这个答案是对clarify变了,它怎么可能interpreted作为时间的函数。[更新2016年1 14 ]) </P >
你可以得到的时间戳作为一个字符串使用.now()或.utcnow()的datetime.datetime: </P >
1 2 3
| >>> import datetime
>>> print datetime.datetime.utcnow()
2012-12-15 10:14:51.898000 |
在不同的now从utcnowAS的预期——否则,他们工作在同样的方式: </P >
1 2
| >>> print datetime.datetime.now()
2012-12-15 11:15:09.205000 |
你可以在时间戳的render的字符串explicitly: </P >
1 2
| >>> str(datetime.datetime.now())
'2012-12-15 11:15:24.984000' |
或者你可以做更多的夏娃的显式格式的时间戳的方式你喜欢。 </P >
1 2
| >>> datetime.datetime.now().strftime("%A, %d. %B %Y %I:%M%p")
'Saturday, 15. December 2012 11:19AM' |
如果你想在大的格式,使用.isoformat()方法面向: </P >
1 2
| >>> datetime.datetime.now().isoformat()
'2013-11-18T08:18:31.809000' |
你可以使用这些方法中的参数计算和无conversions印刷。 </P >
1 2 3 4 5 6 7 8 9
| >>> 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 |
- 我想要的是纪元时间……而不是日期格式……从我提到commandtime.time()就可以明显看出。
- 好的,没问题。其他人可能需要时间戳,比如在文本文件中放置时间戳。
- +我就是这样一个人。这回答了我的问题。
- 我是另一个,可能是因为不合理的上升投票数重定向到这里。这个问题的格式不正确,而且对于典型的需求来说,公认的答案会误导人们:在最常用的服务器时区中获取一个人类可读的后缀(比如文件名后缀)。
- 要将时间戳作为字符串的一部分打印,请使用以下命令:python2:import datetime; print"%s: My timestamp message" % datetime.datetime.utcnow()python3:import datetime; print ("%s: My timestamp message" % datetime.datetime.utcnow())。
基于对的答案从# squiguy,想得到一个真正的时间戳的I型铸造将它从浮。 </P >
1 2 3 4
| >>> import time
>>> ts = int(time.time())
>>> print(ts)
1389177318 |
至少那页的概念。 </P >
- 打印时间戳的原因是什么?默认的类型是什么?
- @tizee type(time.time())给。
- 但是如果你需要比秒更精确的时间,那么浮动就有意义了。
- 我可以知道,int是否可能溢出?我们应该使用ts = long(time.time())吗?
- Python的一大优势是它可以自动切换底层类型,而不必过于严格。stackoverflow.com/questions/7604966/…stackoverflow.com/a/7604981/2080324
- @Cheokyancheng我不会担心太多,python应该为您无缝地做到这一点:stackoverflow.com/a/2104947/2080324。否则,您将使用一种更强大类型的IE:Java,GO
- @python是强类型的。不要把它与静态类型混淆。
- @车彦城:int()具有多态性。如果在旧的Python版本上有必要,它将返回long——所有整数在新的Python版本上都很长。
的答案可能不是或纸。 </P >
-
来信:time.time()时返回大约在数秒elapsed由于在单。对结果的不depend T的时区,这是不是参加当地的UTC时间。这里的POSIX定义为"由于秒的单"。 </P >
-
两time.time()T:不需要你的系统的时钟是同步,它reflects ITS值(虽然它有什么做与本地时区)。不同的电脑可能得到不同的结果,在同一时间。在其他的手,如果你的电脑的时间是同步,那么它是容易的得到的UTC时间,从时间戳(如果我们忽视跨越秒): </P >
1 2 3
| from datetime import datetime
utc_dt = datetime.utcfromtimestamp(timestamp) |
是如何得到的时间戳从UTC时间在各种版本的Python,看看我能得到一个日期转换到秒从单根据UTC??????? </P >
- 这是唯一正确提到datetime.utcfromtimestamp的答案,而datetime.fromtimestamp的答案有308票赞成:-(
方法:I正则落 </P >
1 2 3
| >>> import time
>>> time.mktime(time.gmtime())
1509467455.0 |
有没有这样的东西作为一种"单",在一个特定的时区。"单是良好定义的是一个特定的时刻,所以,如果你改变的时区,时间本身的变化为好。具体来说,这段时间是Jan 1 1970 00:00:00 UTC。。。。。。。所以time.time()时返回的数秒,因为硬件的单。 </P >
- 虽然事实上,UTC是一个时间标准,而不是时区,但标准是它与格林尼治标准时间相同。所以……