Welcome to Geekdojo Sign in | Join | Help

Jose Luis Manners

.NET and other related technologies

Calcular la edad de una persona

Con frecuencia veo esta pregunta en los newsgroups de Microsoft. La siguiente es mi solución al problema:

private int CalcularEdad(DateTime fechaNacimiento)

{

    DateTime fechaActual = DateTime.Now;

    int edad = fechaActual.Year - fechaNacimiento.Year;

   

    // Calcular si no ha cumplido aun

    if ( new DateTime(fechaActual.Year, fechaNacimiento.Month, fechaNacimiento.Day) > fechaActual )

    {

        edad--;

    }

   

    return edad;

}

Published Monday, September 27, 2004 5:40 PM by jmanners
Filed Under:

Comments

# Obtener la Edad a partir de la Fecha de nacimiento y viceversa. @ Tuesday, September 28, 2004 3:55 AM

Obtener la Edad a partir de la Fecha de nacimiento y viceversa.

jmanners

# re: Calcular la edad de una persona @ Wednesday, September 29, 2004 12:44 PM

Hola José,

no conocía tu weblog y la verdad está muy bien.

Quería simplemente intervenir para aportar otra posible solución al cálculo de la Fecha de nacimiento.

Sirva la siguiente rutina como ejemplo:

MessageBox.Show("Años: " & DateDiff(DateInterval.Year, #6/15/1980#, #9/29/2004#))

Un saludo,

Jorge Serrano

jmanners

# re: Calcular la edad de una persona @ Wednesday, September 29, 2004 4:58 PM

Jorge gracias por tus comentarios. Una pequeña observación (sin ánimo de crear polémicas) , es que tu solución no toma en cuenta si la persona ya cumplió años o no. En realidad la solución hace el cálculo basandose en el año sin tomar en consideración el mes y dia. Mira lo que ocurre si cambias los valores con solo un dia de diferencia entre las fechas;

MessageBox.Show("Años: " & DateDiff(DateInterval.Year, #9/30/1968#, #9/29/2004#))

Esta función devuelve 36 cuando en realidad debería devolveer 35 porque la persona cumple el 30 de septiembre, o sea, que todavía no ha cumplido años.

Bueno sólo una observación y nos vemos en los newsgroups.

jmanners

# re: Calcular la edad de una persona @ Wednesday, September 29, 2004 5:36 PM

Hola José,

para nada polemizar. Tienes toda toda la razón, el código no es correcto y asumo el "mea culpa". :-)

Omití una parte del mismo y es que se que con la función DateDiff también se puede hacer lo que indicas y la solución sería:

MessageBox.Show("Años: " & IIf(DateDiff(DateInterval.Day, #9/30/2004#, #9/29/2004#) < 0, "-1", "0") + DateDiff(DateInterval.Year, #9/30/1968#, #9/29/2004#))

Me alegro que me hayas hecho la observación, porque se me había pasado por alto.

Espero que ahora sí, esté ok.
Sino dímelo, porque llevo un día de esos que salen la mitad de las cosas, asi que no dudo que la haya vuelto a pifiar. :-)

Un abrazo y muchas gracias por la aclaración.

Jorge

jmanners

# re: Calcular la edad de una persona @ Monday, October 04, 2004 4:05 PM

Jorge, ahora está perfecto !!!

Saludos.

Jose Luis Manners

jmanners

# como hago un algoritmo para Calcular la edad de una persona teniendo en cuenta la fecha de nacimiento el mes y el dia @ Thursday, April 07, 2005 11:27 PM

mes dia y año ha vivido la persona x royet15@hotmail.com

jmanners

# Obtener la edad a partir de la fecha de nacimiento y viceversa @ Wednesday, January 18, 2006 3:29 AM

[ WillyXoft .NET ]

# re: Calcular la edad de una persona @ Thursday, January 18, 2007 7:08 AM

Buenas a todos,

Yo tampoco es por polemizar pero hay un pequeño error al calcular la edad en el código principal y es el siguiente:
   
   Vamos a poner un ejemplo de fechas :
       fechaNacimiento = 29/02/1996
       fechaActual = 18/01/2007

   Las dos fechas son correctas lo que la fecha de nacimiento es en un año bisiesto (unicos años con 29 días en Febrero) y la fecha actual no. Cuando se realiza la comparación de fechas para ver si se ha cumplido ya el año se hace de la siguiente manera:

   // Calcular si no ha cumplido aun
   if ( new DateTime(2007, 02, 29) >  18/01/2007)

   Esto da un error ya que el año 2007 no es bisiesto y la llamada new DateTime(2007, 02, 29) devuelve una excepción al no poder validar dicha fecha.

   Este error se solucionaría de la siguiente manera:

private int CalcularEdad(DateTime fechaNacimiento)

{
   DateTime fechaActual = DateTime.Now;
   int edad = fechaActual.Year - fechaNacimiento.Year;

   // Calcular si no ha cumplido aun
   if (DateTime.Now.Month < fechaNacimiento.Month ||
   (DateTime.Now.Month == fechaNacimiento.Month && DateTime.Now.Day < fechaNacimiento.Day))

   {
       edad--;
   }

   return edad;

}

Espero les sea de ayuda.

kamach0

# Fechas | hilpers @ Tuesday, January 20, 2009 12:48 PM

PingBack from http://www.hilpers-esp.com/443777-fechas

Fechas | hilpers

Anonymous comments are disabled
Powered by Community Server, by Telligent Systems