Hola
dual3nigma,
Has recomendado "buscar una librería para trabajar con fechas", lo cual demuestra que no has leído mi mensaje anterior.
Tu código suma meses considerando cada vez el último día del mes. Si esa es la intención, se puede hacer mucho más sencillo de esta forma (que, dicho sea de paso, funciona casi en cualquier lenguaje):
Código Python:
Ver originalmeses = (31, 28, 31, 30....., 31) # tupla con cantidad de meses. Notar que no considera años bisiestos
fecha = (2011, 3, 31) # una fecha inicial, nomás por ejemplo
suma_meses = fecha[1] + cant_meses # suponiendo cant_meses = 12, esto da 15
nueva_fecha = (fecha[0] + suma_meses / 12, suma_meses % 12, meses[(suma_meses % 12) -1]
La biblioteca estándar de Python no implementa una función para sumar meses debido a la dificultad para sumar correctamente en todos los casos (si hay algo que caracteriza a Python es que se "niega" a adivinar intenciones).
¿Qué resultado da "31 de enero + 1 mes"? Dependiendo de lo que necesites, podría ser:
- 28 de febrero (para último día)
- 29 de febrero (en años bisiestos)
- 2 de marzo (años bisiestos, suma 31 días, o años normales, suma 30 días)
- 1 de marzo (años bisiestos, suma 1 mes = 30 días)
- 3 de marzo (años no bisiestos, suma 31 días)
Por otro lado, el método de PHP es similar en concepto a trabajar con timetuple()
Saludos.