2017-05-10 129 views
0

我需要输出当前时间的.csv文件的时间戳(以毫秒为单位)。现在,我有:精度为毫秒的Python时间戳

localTime = time.localtime(time.time()) 
now = time.localtime(time.time()) 
currTime = time.time() 
now = time.strftime("\"%Y-%m-%d %H:%M:%S.%f\"", time.localtime(currTime)) 

做这种方式将输出以下格式的时间戳: “2017年5月9日10:13:33%F”这显然是不正确的。我听说那个时间只是精确到一秒钟,但也听说它可以支持微秒。有人可以为我解决这个问题,或者让我看看格式化这些代码以获得所需格式的时间戳的正确方法吗? (2017年5月9日10:13:33.100)例如

+0

你想让它看起来像什么? –

+0

这样的事情:2017-05-09 10:13:33.100 – Travis

回答

1

一个快速的解决办法是:

t=time.time() 
millis = int((t - int(t))*1000) 
0

正如你所说,问题是time并不一定给你想要的精确度[1]。 datetime将是一个更好的选择:

from datetime import datetime 

now = datetime.utcnow() # or datetime.now(your_timezone) 
formatted = now.strftime("%Y-%m-%d %H:%M:%S.%f") 
print(formatted) 

[1]无论是在蟒蛇2.x和3.x,根据the docs

注意,即使时间总是返回浮动点数,并非所有的系统都能提供比1秒更好的精确时间。虽然此函数通常返回非递减值,但如果系统时钟已在两次调用之间回退,则它可以返回比先前调用更低的值。