2013-08-27 3 views
17

私は平均時間の計算を行い、結果マイクロ秒なしの平均を表示したいと思います。Python timedeltaはマイクロ秒を削除します

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

おかげ

+0

「日付時刻」とは何です... timedeltasのリスト?もしそうなら、合計はマイクロ秒を含むtimedeltaオブジェクトを返します...だから何が問題なのですか? – tdelaney

+0

'avg.strftime("%Y-%m-%d%H:%M:%S ")'を返しますが、文字列を返します。 –

答えて

19

はマイクロ秒と読み取り専用の属性として、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) 

解決策が見つかりませんでした。

+5

私が知る限り、それは「マイクロ秒」でなければなりません。 – daviewales

+0

「マイクロ秒」にする必要があります。 Proof [here](http://pastebin.com/P4qH1G51) –

+1

timedeltaオブジェクトでは 'microseconds'ですが、timeオブジェクトとdatetimeオブジェクトでは' microsecond'です。 –

12

それは表示のためだけであれば、このアイデアは動作します:

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

アイデアがポイントの前にあるものだけを取ることです。 それは、01のため1時23分45秒を返します:23:あなたが行うことができますtimedetlaを与え45.1235

2

別のオプション、:

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

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

3

あなたがそうのような日付時刻の要素を変更することができます。

In [1]: datetime.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0) 
Out[1]: datetime.datetime(2017, 4, 28, 0, 0) 
関連する問題