datetime:舍入/修剪位数,以微秒为单位
目前,我正在记录东西,并且正在使用带有自定义的格式化程序formatTime()
:
def formatTime(self, _record, _datefmt):
t = datetime.datetime.now()
return t.strftime('%Y-%m-%d %H:%M:%S.%f')
我的问题是微秒%f
为六位数。无论如何,是否需要吐出更少的数字,例如微秒的前三个数字?
-
最简单的方法是使用切片将微秒的最后三位数字切掉:
def format_time(): t = datetime.datetime.now() s = t.strftime('%Y-%m-%d %H:%M:%S.%f') return s[:-3]
我强烈建议切碎。我曾经写过一些对时间戳进行四舍五入而不是四舍五入的记录代码,当四舍五入改变了最后一位时,我发现它实际上有点令人困惑。定时代码在某个时间戳记时停止运行,但是由于舍入的缘故,存在带有该时间戳记的日志事件。切碎更简单,更可预测。
如果您想实际舍入数字而不是仅切碎,则需要做更多的工作,但并不可怕:
def format_time(): t = datetime.datetime.now() s = t.strftime('%Y-%m-%d %H:%M:%S.%f') head = s[:-7] # everything up to the '.' tail = s[-7:] # the '.' and the 6 digits after it f = float(tail) temp = "{:.03f}".format(f) # for Python 2.x: temp = "%.3f" % f new_tail = temp[1:] # temp[0] is always '0'; get rid of it return head + new_tail
显然,您可以使用更少的变量来简化上述操作;我只是希望它很容易遵循。