python/datetimeによる時刻パース&演算

/ python

Pythonで時刻を表す任意フォーマットの文字列をパースしてその差を計算するサンプルコード。

次のような時刻タイムスタンプ付きの1行を浮動小数点型の秒数に変換する。

20220214-222512-332435142 This is extra sentence.

フォーマットは%Y%m%d-%H%M%S-%Nとなっている。最後はナノ秒を表しており特定のLinuxにおけるdataコマンドに由来している。1/1000倍すればマイクロ秒、さらに1/1000倍すればミリ秒となる。

import re
from datetime import datetime

sentence = "20220214-222512-332435142 This is extra sentence."

timestamp = re.match(r'^(\d{8}-\d{6})-(\d{9})', sentence)
if timestamp:
    seconds = datetime.strptime(timestamp.group(1), "%Y%m%d-%H%M%S").timestamp()
    seconds += float(timestamp.group(2))*1e-9

print(seconds)

結果は次のようになる。

1644845112.3324351

あとは引き算するなり煮るなり焼くなりすればよいだろう。

datetime.strptime("20220214-222412", "%Y%m%d-%H%M%S").timestamp()

などとすれば特定時刻との前後関係の比較も容易!