Calcular edad

Manuel Enrique González Ramírez maengora en gmail.com
Lun Dic 31 23:02:08 CET 2007


Ok. nuevamente muchas gracias.

El día 30/12/07, Chema Cortes <py en ch3m4.org> escribió:
>
> El Sunday 30 December 2007 16:28:17 Manuel Enrique González Ramírez
> escribió:
> > Gracias amigos.
> >
> > Ambas respuestas funcionan correctamente, pero teniendo en cuento que
> soy
> > un notavo en la programacion, me quedare con la mas sencilla.
>
> Tan sólo he de decirte que las dos soluciones que puse fallan bajo ciertas
> circunstancias. En concreto, la primera solución fallará si la fecha de
> nacimiento es un 29 de febrero (año bisiesto).
>
> Una forma de evitar este error es creando un método .replace() para tipos
> date
> para que sea más "seguro" cambiar sus atributos:
>
>
> import datetime
>
> class SureDate(datetime.date):
>   def replace(self, **kw):
>     day=kw.get("day",self.day)
>     kw["day"]=1
>     delta=datetime.timedelta(day)
>     return datetime.date.replace(self,kw)+delta
>
> De esta manera:
>
> dnacim=SureDate(2000,2,29).replace(year=2007)
>
> en lugar de dar error por no existir 29 de febrero de 2007, devolverá 1 de
> marzo de 2007 como resultado.
>
> La solución quedaría completada así:
>
> dnacim=SureDate(1976,05,26)
> dhoy=SureDate.today()
>
> edad=dhoy.year-dnacim.year
> if dnacim.replace(year=dhoy.year)<dhoy:
>    edad-=1
>
>
> Para la solución más general, la que saca años, meses y días, también le
> pasa
> lo mismo, aparte de que calcula mal. He intentando crear una versión
> basada
> en la clase SureDate, pero todavía no la he acabado. Quien necesite algo
> así,
> tal vez la otra solución (la "compleja") le pueda servir mejor.
> _______________________________________________
> Lista de correo Python-es
> http://listas.aditel.org/listinfo/python-es
> FAQ: http://listas.aditel.org/faqpyes
>
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es