relativedelta(months=12)
は実際にはrelativedelta(years=+1)
です。それは自動的に月から年に変換されます。たとえばmonths=13
運転後months
の量は-11と11の間に残っているので、場合ヶ月は-11下または11より上に行くときの年のみに変更、さらにrelativedelta(years=+1, months=+1)
につながる、今年は変更されません。
あなたが探している「ネット月間」を得るには、rdelta.years
とrdelta.months
の両方の値を調べる必要があります。
def total_months(rdelta):
return (rdelta.years * 12) + rdelta.months
relativedelta
をサブクラス化すると、これを少し直感的に使用できます。もちろん
class reldelta(relativedelta):
@property
def total_months(self):
return (self.years * 12) + self.months
その後
>>> delta = reldelta(years=1) - relativedelta(months=4)
>>> delta
reldelta(years=+1, months=-4)
>>> delta.total_months
8
あなたは月の変更の日数ので、この日で考慮しようとする場合、これは厄介得ることができます。これはdays
は数ヶ月のように制限されていない理由である
>>> relativedelta(days=9999)
relativedelta(days=+9999)
'relativedelta(ヶ月= 12)'され、実際に 'relativedelta(年= + 1)'それは自動的に数ヶ月から数年を変換しています。たとえば 'months = 13'の場合、' relativedelta(years = + 1、months = + 1) 'という結果になります。 – sytech