No he probado rigurosamente mi programa como para decir que funciona al 100% pero aqui te dejo una implementación hecha por mi para sumarle meses a una fecha.
Descripción:
Dado una fecha valida (en este caso un objeto datetime) añadir meses a la fecha de la siguiente manera:
- Calcula el nuevo año, después de todo si pasan mas de 12 meses es un año completo.
- Calcula cuantos meses se va a desplazar, esto siempre cae un rango de 0 a 11. Después de todo si nos movemos 12 meses llegamos al mismo mes, lo mismo pasa con 24, 48 y todos los múltiplos de 12.
- Se desplaza esa cantidad de meses y hace una corrección tanto en los meses como en los años.
- El día es el mismo.
- Si resulta ser una fecha no valida entonces el día se pasa al ultimo día valido del mes.
Código Python:
Ver originalfrom datetime import datetime
def add_month(mDate, months):
nYear = mDate.year + months / 12
dMonth = months % 12
if dMonth + mDate.month > 12:
nYear += 1
nMonth = (mDate.month + dMonth) % 12 or 12
nDay = mDate.day
try:
return datetime(nYear, nMonth, nDay)
except Exception, e:
pass
if nMonth == 2:
nDay = 28
if (nYear % 4 == 0 and nYear % 100 != 0) or nYear % 400 == 0:
nDay = 29
else:
nDay = 30
return datetime(nYear, nMonth, nDay)
d = datetime(2000, 1, 31)
for i in range(24):
print add_month(d, i)
NOTA: Solo funciona con fechas validas y meses positivos o cero.