如何在Python中的日期准确减去X个月?

Mar*_*Lee 7 python datetime

所以这段代码是我想要的:

import datetime
d = datetime.date.today()

three_months_ago = d - timedelta(months=3)
Run Code Online (Sandbox Code Playgroud)

但是,正如我们所知,timedelta 中不存在 'months' 参数。

我承认我可以这样编程来实现目标:

if d.month > 3:
    three_months_ago = datetime.date(d.year, d.month-3, d.day)
else:
    three_months_ago = datetime.date(d.year-1, d.month-3+12, d.day)
Run Code Online (Sandbox Code Playgroud)

但这似乎真的很愚蠢......

你们能告诉我如何聪明地意识到这一点吗?

小智 14

这可以帮助:

>>>from dateutil.relativedelta import relativedelta
>>>import datetime
>>>datetime.date.today()
datetime.date(2016, 3, 10)
>>>datetime.date.today() - relativedelta(months=3)
datetime.date(2015, 12, 10)
Run Code Online (Sandbox Code Playgroud)

您也可以使用 relativedelta() 来增加或减少周和年。