как получить тот же день следующего месяца данного дня в Python с помощью даты и времени

я знаю использование datetime.timedelta, я могу получить дату формы на расстоянии в некоторые дни, данной дату

daysafter = datetime.date.today() + datetime.timedelta(days=5)

но кажется нет datetime.timedelta(month=1)

45
задан Mad Physicist 17 June 2018 в 03:28
поделиться

2 ответа

Конечно, нет - если сегодня 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
31
ответ дан 26 November 2019 в 20:47
поделиться

Используйте модуль dateutil . Он имеет относительных дельт времени :

import datetime
from dateutil import relativedelta
nextmonth = datetime.date.today() + relativedelta.relativedelta(months=1)

Красиво.

135
ответ дан 26 November 2019 в 20:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: