Calcular edad

Jorge Luis Betancourt González mayragm en finlay.cmw.sld.cu
Mie Ene 2 01:25:17 CET 2008


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
 
Aunque ya te han dado la respuesta a la forma Python, me parece
curioso comentar que también puedes utilizar un Algoritmo (Fechas
Julianas) que lo que hace es convertir cada fecha en un entero largo,
esto se aplica a las dos fechas que deseas y al restarlas te da la
diferencia, pero bueno esto solo un comentario,

slds

P.D: Tenía yo una implementación de este algoritmo en Python, pero un
HDD petó y he perdido muy buenas cosas :-(

  .''`.  GNU/Linux Debian "Sid"   Jorge Luis Betancourt González
 : :' :  Version Unstable         Camagüey Cuba.
 `. `'   Phone :++(53)(32)59440   E-Mail: mayragm en finlay.cmw.sld.cu
   `-    Linux R. User: 386271    Jabber: betancourt.jorge en gmail.com



Manuel Enrique González Ramírez escribió:
> 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
>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.4 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
 
iD8DBQFHetntFZXz0sYE+fYRAtijAJ0Tgj/sZwiy0cLvZT1nszzapXBGGQCggzBI
GCxuJxFAm3eDp+GO95aMihE=
=nNlK
-----END PGP SIGNATURE-----


-- 
Este mensaje ha sido analizado por MailScanner del Nodo Finlay, Camaguey, Cuba
en busca de virus y se considera que está limpio.

_______________________________________________
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