web-dev-qa-db-ja.com

timedeltaオブジェクトをdatetimeオブジェクトに変換する方法

Timedeltaオブジェクトをdatetimeオブジェクトに変換する適切な方法は何ですか?

すぐにdatetime(0)+deltaObjのようなものを思いつきますが、それはあまりいいことではありません... toDateTime()関数か何かのようなものはありませんか?

21
olamundo

タイムデルタを日時に変換することは意味がありませんが、最初の日時または開始日時を選択し、そこからタイムデルタを加算または減算することは理にかなっています。

>>> import datetime
>>> today = datetime.datetime.today()
>>> today
datetime.datetime(2010, 3, 9, 18, 25, 19, 474362)
>>> today + datetime.timedelta(days=1)
datetime.datetime(2010, 3, 10, 18, 25, 19, 474362)
34
Roger Pate

.total_seconds()を取得し、それを使用して新しい時間オブジェクト(または必要に応じてdatetimeオブジェクト)を作成できることがわかりました。

import time
import datetime

start_dt_obj = datetime.datetime.fromtimestamp(start_timestamp)
stop_dt_obj = datetime.datetime.fromtimestamp(stop_timestamp)
delta = stop_dt_obj - start_dt_obj

delta_as_time_obj = time.gmtime(delta.total_seconds())

これにより、次のようなことができます。

print('The duration was {0}'.format(
    time.strftime('%H:%M', delta_as_time_obj)
)
0
sadpanduar