web-dev-qa-db-ja.com

timedeltaオブジェクトからマイクロ秒を削除するにはどうすればよいですか?

平均時間を計算し、結果の平均をマイクロ秒なしで表示したいと思います。

avg = sum(datetimes, datetime.timedelta(0)) / len(datetimes)
27
Hobbestigrou

Timedetlaを取得し、マイクロ秒と読み取り専用属性として、独自のマイクロ秒を削除します。

avg = sum(datetimes, datetime.timedelta(0)) / len(datetimes)
avg = avg - datetime.timedelta(microseconds=avg.microseconds)

繰り返し必要な場合は、独自の小さな機能を作成できます。

import datetime

def chop_microseconds(delta):
    return delta - datetime.timedelta(microseconds=delta.microseconds)

より良い解決策は見つかりませんでした。

29
Hobbestigrou

ディスプレイのみの場合、このアイデアは機能します:

avgString = str(avg).split(".")[0]

アイデアは、ポイントの前にあるものだけを取ることです。 1:23:45を返します1:23:45.1235

23
sangorys

別のオプション、timedetlaが与えられた場合:

_avg = datetime.timedelta(seconds=math.ceil(avg.total_seconds()))
_

状況に応じて、math.ceil()math.round()またはmath.floor()に置き換えることができます。

8
eran

私はこれが私のために働くことがわかりました:

start_time = datetime.now()
some_work()
end time = datetime.now()
print str(end_time - start_time)[:-3]

出力:

0:00:01.955

https://docs.python.org/3.2/library/datetime.html#timedelta-objects で検索した後、私はこれについて考えました

お役に立てれば!

2
Eitan.k.