Я хотел бы добавить один месяц к заданной дате
import datetime
dt = datetime.datetime(year=2014, month=5, day=2)
поэтому я должен получить
datetime.datetime(year=2014, month=6, day=2)
но с
dt = datetime.datetime(year=2015, month=1, day=31)
я должен получить
datetime.datetime(year=2015, month=3, day=1)
потому что нет 2015-02-31 (и я хочу, чтобы мой результат был круглым через день после)
В некоторых месяцах 31 день, в других 30, в некоторых 29, в некоторых 28!
поэтому добавление datetime.timedelta
, вероятно, не очень хороший способ (потому что мы не знаем, сколько дней нужно добавить)
Я заметил, что у панд есть интересная концепция DateOffset
http://pandas.pydata.org/pandas-docs/stable/timeseries.html#dateoffset-objects
но я не нашел смещения Month
, только MonthBegin
или MonthEnd
Я также вижу этот пост Как рассчитать дату через шесть месяцев от текущей даты с помощью модуля Python datetime?
поэтому я попробовал dateutil.relativedelta
, но
from dateutil.relativedelta import relativedelta
datetime.datetime(year=2015, month=1, day=31)+relativedelta(months=1)
возвращается
datetime.datetime(2015, 2, 28, 0, 0)
поэтому результат был округлен за один день до.
Есть ли (чистый) способ округлить день after?
редактировать: я привел пример с добавлением одного месяца, но я также хочу иметь возможность добавить, например: 2 года и 6 месяцев (используя relativedelta(years=2, months=6)
)
relativedelta
. Это позволит вам использовать любое время, которое вы хотите. Обратите внимание, что это не сработает, если вы включите дни, часы и т. д. - person Ffisegydd   schedule 28.01.2015