Ver Mensaje Individual
  #4 (permalink)  
Antiguo 31/08/2011, 08:54
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Suma de meses a una fecha en python

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 original
  1. meses = (31, 28, 31, 30....., 31) # tupla con cantidad de meses. Notar que no considera años bisiestos
  2. fecha = (2011, 3, 31) # una fecha inicial, nomás por ejemplo
  3. suma_meses = fecha[1] + cant_meses # suponiendo cant_meses = 12, esto da 15
  4. 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.