Como comentó Niklas, dado que los meses varían en longitud, un mes a partir de hoy puede ser bastante ambiguo.
Todas las industrias tienen algún tipo de convención; el resultado puede ser diferente dependiendo de tus objetivos. Por ejemplo, ¿se usará para cálculos de intereses? ¿se usará para generar facturas recurrentes?
Si quieren 30 días a partir de hoy:
>>> import datetime
>>> d1 = datetime.date.today()
>>> d1
datetime.date(2012, 3, 8)
>>> d1 + datetime.timedelta(30)
datetime.date(2012, 4, 7)
no puede ser lo que quiera si el mes tiene 31 días:
>>> d2 = datetime.date(2012, 1, 1)
>>> d2 + datetime.timedelta(30)
datetime.date(2012, 1, 31)
>>> import calendar
>>> calendar.monthrange(2012, 1)
(6, 31)
>>> d2 + datetime.timedelta(calendar.monthrange(d2.year, d2.month)[1])
datetime.date(2012, 2, 1)
Sin embargo, no puede ser el resultado de lo esperado si el mes que viene tiene menos de 30 días:
>>> d3 = datetime.date(2012, 1, 31)
>>> d3 + datetime.timedelta(calendar.monthrange(d3.year, d3.month)[1])
datetime.date(2012, 3, 2)
>>> import dateutil
>>> d3 + dateutil.relativedelta.relativedelta(months=1)
datetime.date(2012, 2, 29)
en una plantilla o en python? – jterrace
en python, pero se me agradecerá si me explicas que ambos –
1 mes es + 30 días o es 1 mes es flexible? –