如何在strftime()中将毫秒截断为2个最高有效小数



我有一个日期时间对象,它打印有:

from datetime import datetime
ts = datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f").strip()
print('TS: {}'.format(ts))
# "2020-12-03 02:13:27.823467"

但是,我只想显示毫秒的前两位数字,如下所示:2020-12-03 02:13:27.82。使用";CCD_ 2";没有工作,也许还有另一个时间功能更合适?

在不引入(可能滞后(regex字符串操作的情况下,最好的方法是什么

下面的内容怎么样?

import datetime

now = datetime.datetime.now()
ts = now.strftime('%Y-%m-%d %H:%M:%S') + '.{:02d}'.format(round(now.microsecond, -4))[:3]
print('TS: {}'.format(ts))
# TS: 2020-12-03 01:22:01.86

编辑

也许一个更好的参数化解决方案是:

import datetime

def largest_digits(value, num_digits=2, max_digits=6):
discard_digits = num_digits - max_digits 
base = 10 ** -discard_digits
return f'{round(value, discard_digits) // base:02d}'

now = datetime.datetime.now()
ts = now.strftime('%Y-%m-%d %H:%M:%S') + '.' + largest_digits(now.microsecond, 2)
print('TS: {}'.format(ts))
# TS: 2020-12-03 01:22:01.86

Aaahi,答案微不足道!使用字符串选择。

ts = datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f").strip()[:-4]

相关内容

  • 没有找到相关文章

最新更新