I'd like to add one month to a given date
import datetime
dt = datetime.datetime(year=2014, month=5, day=2)
so I should get
datetime.datetime(year=2014, month=6, day=2)
but with
dt = datetime.datetime(year=2015, month=1, day=31)
I should get
datetime.datetime(year=2015, month=3, day=1)
because there is no 2015-02-31 (and I want my result being round one day after)
Some months have 31 days, some other 30, some 29, some 28 !
so adding a datetime.timedelta
is probably not a good manner of doing (because we don't know the number of days to add)
I noticed that Pandas have an interesting concept of DateOffset
http://pandas.pydata.org/pandas-docs/stable/timeseries.html#dateoffset-objects
but I didn't find a Month
offset, just MonthBegin
or MonthEnd
I see also this post How do I calculate the date six months from the current date using the datetime Python module?
so I tried dateutil.relativedelta
but
from dateutil.relativedelta import relativedelta
datetime.datetime(year=2015, month=1, day=31)+relativedelta(months=1)
returns
datetime.datetime(2015, 2, 28, 0, 0)
so result was rounded one day before.
Is there a (clean) way to round day after ?
edit:
I gave an example with one month to add but I also want to be able to add for example : 2 years and 6 months (using a relativedelta(years=2, months=6)
)