2014-10-27 149 views
1

我使用下面的打印出来的时间戳:格式微秒到小数点后两位(其实转换毫秒到几十微秒)

strftime('%d-%m-%Y %H:%M:%S.%f') 

但是我想在微秒四舍五入到小数点后两位,而不是打印小数点后六位。是否有一种更简单的方法来实现这一点,而不是将所有时间元素“解包”,格式化并将微秒舍入到2位小数,并格式化新的“打印字符串”?

+0

这些是'datetime'实例? – 2014-10-27 11:52:55

回答

0
decimal_places = 2 
ndigits = decimal_places - 6 
assert ndigits < 0 
d = d.replace(microsecond=round(d.microsecond, ndigits)) 
print(d.strftime('%d-%m-%Y %H:%M:%S.%f')[:ndigits]) 
# -> 2014-10-27 11:59:53.87 
2

你必须自己动手;使用字符串格式化来格式化不微秒的日期,然后添加在单独的microsecond属性的顶部有两个数字:

'{:%d-%m-%Y %H:%M:%S}.{:02.0f}'.format(dt, dt.microsecond/10000.0) 

演示:

>>> from datetime import datetime 
>>> dt = datetime.now() 
>>> '{:%d-%m-%Y %H:%M:%S}.{:02.0f}'.format(dt, dt.microsecond/10000.0) 
'27-10-2014 11:56:32.72' 
+0

已经这样做了。因为float会成为datetime()的有用补充,所以不禁感觉秒。 – MichaelJohn 2014-11-04 12:36:22