2

dateutil.relativedelta オブジェクトを datetime.timedelta オブジェクトに変換するにはどうすればよいですか?

例えば、

# pip install python-dateutil

from dateutil.relativedelta import relativedelta
from datetime import timedelta

rel_delta = relativedelta(months=-2)
# How can I convert rel_delta to a timedelta object so that I can call total_seconds() ?
time_delta = ???(rel_delta)  
time_delta.total_seconds()  # call the timedelta.total_seconds() method
4

3 に答える 3

6

1 つの大きな理由で、それはできません。同じ情報が保存されていないからです。 datetime.timedelta日、秒、ミリ秒のみを保存しますが、供給されたすべての時間コンポーネントdateutil.relativedeltaを保存します。

それdateutil.relativedeltaは、1ヶ月の違いなどを保存する上で重要ですが、月の長さはさまざまなので、同じことを で表現する方法はまったくありませんdatetime.timedelta

于 2015-01-01T06:39:29.793 に答える
4

を特定の日付からに変換しようとしている場合はrelativedelta、既知の時刻を加算および減算するだけです。timedelta

utcnow = datetime.utcnow()
rel_delta = relativedelta(months=-2)
time_delta = utcnow + rel_delta - utcnow  # e.g, datetime.timedelta(days=-62)

コメンターが指摘しているように、結果のtimedelta値は月によって異なります。

于 2015-12-09T19:44:44.177 に答える