サイトアイコン Python Snippets

秒から時刻表記、時刻の正規化

100秒を 1min 40secと表記したり、時間の構成要素から人間が理解しやすい時刻表記に正規化する方法。

標準モジュールではないですが、定番のdateutilsモジュールを使うのが楽です。

$ pip install dateutils

100sec -> 1min 40sec

>>> from dateutil.relativedelta import relativedelta
>>> relativedelta(seconds=100).normalized()
relativedelta(minutes=+1, seconds=+40)

123456sec -> 1day 10hours 17minues 36sec

>>> relativedelta(seconds=123456).normalized()
relativedelta(days=+1, hours=+10, minutes=+17, seconds=+36)

normalizedで正規化しているので、1.5hoursは1hour 30minになる

>>> relativedelta(hours=1.5).normalized()
relativedelta(hours=+1, minutes=+30)

文字列として時刻表記にする例

>>> "{0.hours:02}:{0.minutes:02}:{0.seconds:02}".format(relativedelta(seconds=85))
'00:01:25'
関連記事:

モバイルバージョンを終了