格式微秒到小数点后两位(其实转换毫秒到几十微秒)
问题描述:
我使用下面的打印出来的时间戳:格式微秒到小数点后两位(其实转换毫秒到几十微秒)
strftime('%d-%m-%Y %H:%M:%S.%f')
但是我想在微秒四舍五入到小数点后两位,而不是打印小数点后六位。是否有一种更简单的方法来实现这一点,而不是将所有时间元素“解包”,格式化并将微秒舍入到2位小数,并格式化新的“打印字符串”?
答
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
答
你必须自己动手;使用字符串格式化来格式化不微秒的日期,然后添加在单独的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
这些是'datetime'实例? – 2014-10-27 11:52:55