此方法允许灵活的精度,如果您指定的精度过高,则会消耗整个微秒值。
def formatTime(self, _record, _datefmt, precision=3):
dt = datetime.datetime.now()
us = str(dt.microsecond)
f = us[:precision] if len(us) > precision else us
return "%d-%d-%d %d:%d:%d.%d" % (dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, int(f))
该方法实现了四舍五入到小数点后三位:
import datetime
from decimal import *
def formatTime(self, _record, _datefmt, precision='0.001'):
dt = datetime.datetime.now()
seconds = float("%d.%d" % (dt.second, dt.microsecond))
return "%d-%d-%d %d:%d:%s" % (dt.year, dt.month, dt.day, dt.hour, dt.minute,
float(Decimal(seconds).quantize(Decimal(precision), rounding=ROUND_HALF_UP)))
我故意避免使用strftime 方法,因为我不希望在不重新验证的情况下修改完全序列化的日期时间对象。如果您想进一步修改它,这种方式还可以显示日期内部。
在舍入示例中,请注意Decimal 模块的精度是基于字符串的。