1. ホーム
  2. python

[解決済み] 日数だけを扱う場合の「datetime.timedelta」と「dateutil.relativedelta.relativedelta」の違いは何ですか?

2022-10-08 21:44:41

質問

とはどのような違いがあるのでしょうか? datetime.timedelta (Pythonの標準ライブラリから)と dateutil.relativedelta.relativedelta を使用すると、日数のみで作業する場合?

私が理解している限りでは timedelta は日(と週)のみをサポートし、一方 relativedelta は年、月、週、日単位で定義された期間のサポートと、年、月、日の絶対値の定義を追加しています。 (この質問の目的では、時間、分、秒について心配する必要はないことを思い出してください)

でしか作業していないことを考慮すると、私は datetime.date オブジェクトだけを扱い、日数で定義された期間だけに興味があることを考えると timedeltarelativedelta ? 何か違いがあるのでしょうか?

from datetime import date, timedelta
from dateutil.relativedelta import relativedelta

i = -1  # This could have been any integer, positive or negative
someday = date.today()
# Is there any difference between these two lines?
otherday = someday + timedelta(days=i)
otherday = someday + relativedelta(days=i)

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

dateutil は、python 標準の拡張パッケージである datetime モジュールの拡張パッケージです。おっしゃるとおり、1日よりも大きな単位で表現されるタイムデルタのような追加機能を提供します。

これは、恋人の誕生日が来るまでに何ヶ月貯められるか、とか、今月の最終金曜日は何曜日か、といった質問をしなければならない場合に便利です。これは、月の長さが異なることや、うるう年で余分な日があることに起因する複雑な計算を隠蔽します。

あなたの場合、日数だけに興味があるのでしょう。ですから timedelta への余分な依存を避けることができます。 dateutil パッケージへの余分な依存を避けることができるからです。