я знаю использование datetime.timedelta, я могу получить дату формы на расстоянии в некоторые дни, данной дату
daysafter = datetime.date.today() + datetime.timedelta(days=5)
но кажется нет datetime.timedelta(month=1)
Конечно, нет - если сегодня 31 января, что будет «в тот же день следующего месяц"?! Очевидно, что не существует правильного решения, поскольку 31 февраля не существует, а модуль datetime
не не пытается «угадать, без чего пользователь создает эту невозможную задачу. правильное решение думает (ошибочно) является очевидным решением ";-).
Предлагаю:
try:
nextmonthdate = x.replace(month=x.month+1)
except ValueError:
if x.month == 12:
nextmonthdate = x.replace(year=x.year+1, month=1)
else:
# next month is too short to have "same date"
# pick your own heuristic, or re-raise the exception:
raise
Используйте модуль dateutil
. Он имеет относительных дельт времени :
import datetime
from dateutil import relativedelta
nextmonth = datetime.date.today() + relativedelta.relativedelta(months=1)
Красиво.