如何从timedelta对象中删除微秒?

Hob*_*rou 31 python format datetime timedelta

我计算平均时间,我想显示没有微秒的结果平均值.

avg = sum(datetimes, datetime.timedelta(0)) / len(datetimes)
Run Code Online (Sandbox Code Playgroud)

Hob*_*rou 32

获取timedetla并删除自己的微秒,如微秒和只读属性:

avg = sum(datetimes, datetime.timedelta(0)) / len(datetimes)
avg = avg - datetime.timedelta(microseconds=avg.microseconds)
Run Code Online (Sandbox Code Playgroud)

如果是经常性的需要,你可以自己做一些小功能:

import datetime

def chop_microseconds(delta):
    return delta - datetime.timedelta(microseconds=delta.microseconds)
Run Code Online (Sandbox Code Playgroud)

我还没有找到更好的解决方案.

  • 据我所知,它应该是"微秒". (6认同)
  • 在timedelta对象上是"微秒",但在时间和日期时间对象上是"微秒". (3认同)

san*_*rys 28

如果只是为了显示,这个想法是有效的:

avgString = str(avg).split(".")[0]
Run Code Online (Sandbox Code Playgroud)

我们的想法是只采取前面的观点.它将返回1时23分45秒01:23:45.1235

  • 简单的美丽。 (4认同)

Raf*_*fal 10

c -= timedelta(microseconds=c.microseconds)
Run Code Online (Sandbox Code Playgroud)


era*_*ran 8

另一个选择,给定timedetla你可以做:

avg = datetime.timedelta(seconds=math.ceil(avg.total_seconds()))
Run Code Online (Sandbox Code Playgroud)

您可以根据具体情况更换math.ceil(),math.round()math.floor().