1. ホーム
  2. python

[解決済み] タイムデルタの理解

2023-03-23 13:22:19

質問

以下の Python コードが与えられたとき、そこで何が起こっているかを理解するのを助けてください。

start_time = time.time()
time.sleep(42)
end_time = time.time()

uptime = end_time - start_time

human_uptime = str(datetime.timedelta(seconds=int(uptime)))

ということで、差分として start timeend time で、5行目でキャスティングでデュレーションを切り上げて、今度は何を説明するんだ?

デルタの意味(平均や差)はわかりますが、どうして seconds = uptimetimedelta という文字列のキャスティングがうまくいって、なぜか HH:MM:SS ?

どのように解決するのですか?

timedeltaは以下のように定義されています。

class datetime.timedelta([days,] [seconds,] [microseconds,] [milliseconds,] [minutes,] [hours,] [weeks])

すべての引数はオプションで、デフォルトは0です。

このようにオプションの引数で簡単に "Three days and four milliseconds" と言うことができます。

>>> datetime.timedelta(days=3, milliseconds=4)
datetime.timedelta(3, 0, 4000)
>>> datetime.timedelta(3, 0, 0, 4) #no need for that.
datetime.timedelta(3, 0, 4000)

また、strキャストの場合は __repr__ の代わりに、読みやすさを向上させるためにきれいなフォーマットされた値を返します。docsから。

str(t) [D day[s], ][H]H:MM:SS[.UUUUU] という形式の文字列を返します。 ここで、Dは負のtの場合は負になります。

>>> datetime.timedelta(seconds = 42).__repr__()
'datetime.timedelta(0, 42)'
>>> datetime.timedelta(seconds = 42).__str__()
'0:00:42'

ドキュメントをチェックアウトします。

http://docs.python.org/library/datetime.html#timedelta-objects