Python:如何将月份添加到2012年12月并获得2013年1月?

day*_*mer 4 python calendar date

>>> start_date = date(1983, 11, 23)
>>> start_date.replace(month=start_date.month+1)
datetime.date(1983, 12, 23)
Run Code Online (Sandbox Code Playgroud)

这个工作直到月份<=11,我一直这样做

>>> start_date = date(1983, 12, 23)
>>> start_date.replace(month=start_date.month+1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: month must be in 1..12
Run Code Online (Sandbox Code Playgroud)

如何在12月新增月份时增加月份的增量?

Dan*_*man 9

dateutil库是这样计算的有用:

>>> start_date + relativedelta(months=2)
datetime.date(1984, 1, 23)
Run Code Online (Sandbox Code Playgroud)


And*_*ark 5

使用datetime.timedeltacalendar.monthrange

>>> from datetime import date, timedelta
>>> import calendar
>>> start_date = date(1983, 12, 23)
>>> days_in_month = calendar.monthrange(start_date.year, start_date.month)[1]
>>> start_date + timedelta(days=days_in_month)
datetime.date(1984, 1, 23)
Run Code Online (Sandbox Code Playgroud)