2011-02-04 17 views
4

"%H:%M:%S"形式のタイムスタンプのリストがあります。たとえば、Python:タイムスタンプの解析と時差の計算(ミリ秒単位)

09:50:08.650000 
    09:50:08.665000 
    09:50:08.820000 
    09:50:08.877000 
    09:50:09.897000 
    09:50:09.907000 
    09:50:09.953000 
    09:50:10.662000 
    09:50:10.662000 

私は効率的にpythonで各行の間のミリ秒で計算する必要があります。

+0

フォーマットは ''%H:%M:%S.%f''です。 – eumiro

+0

私は参照してください。ありがとう。私は今、タイムディスタの表現をしています。どのようにして差をミリ秒単位で計算するのですか? – LouisChiffre

+2

'int(diff.seconds * 1000. + diff.microseconds/1000.)' – eumiro

答えて

7

%H:%M:%S.%fは回を解析するときに使用する書式文字列です。ミリ秒単位で

0:00:00.015000 
0:00:00.155000 
0:00:00.057000 
0:00:01.020000 
0:00:00.010000 
0:00:00.046000 
0:00:00.709000 
0:00:00 

出力するに違い:内部でのみ日、秒、マイクロ秒を格納

delta = times[i + 1] - times[i] 
print ((delta.days * 24 * 60 * 60 + delta.seconds) * 1000 + delta.microseconds/1000) 

timedeltaことhttp://docs.python.org/library/datetime.html#strftime-strptime-behavior

import datetime 

times = """ 
09:50:08.650000 
09:50:08.665000 
09:50:08.820000 
09:50:08.877000 
09:50:09.897000 
09:50:09.907000 
09:50:09.953000 
09:50:10.662000 
09:50:10.662000 
""".split() 

# parse all times 
times = [datetime.datetime.strptime(x, "%H:%M:%S.%f") for x in times] 
for i in range(len(times) - 1): 
    # compute timedelta between current and next time in the list 
    print times[i + 1] - times[i] 

結果を参照してください。他の単位は変換されます。

+0

ミリ秒単位の変換については、質問コメントのeurmiroからのコメントを参照してください。 – LouisChiffre

+0

ヒントをありがとう。私は変換を追加し、その日が含まれていればそれが必要です。 –

2

datetime.strptime()機能を試しましたか? datetimeで文字列として読み込み、それをdatetimeオブジェクトに変換します。

datetime.timedelta()を使用して、差をミリ秒単位で計算できます。ここ

ドキュメント:http://docs.python.org/library/datetime.html#strftime-strptime-behavior

+0

datetime.strptimeを使用しましたが、フォーマットとして "%H:%M:%S"を使用すると、ミリ秒のためにValueErrorが発生します。 – LouisChiffre

+0

あなたが持っていた問題は何ですか?文字列で使用している浮動小数点は%Sが整数 – Jordan

+0

あなたの助けに感謝しているので、 'strptime()'に問題があることに注意してください。正しい書式設定は何ですか? – LouisChiffre

関連する問題