Calcular edad con fecha de nacimiento

Hoy entre mis curiosidades me encontré un código muy útil para saber la edad de una persona a partir de su fecha de nacimiento, la explicación del código esta en los comentarios

NOTA:  Recuerden que en la clase Calendar los meses comienzan en el 0 es decir Enero es igual a 0 y Diciembre es igual a 11 (No 12 como podría esperarse)

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
@Autor: www.javerosanonimos.com
Twitter: @javerosanonimos
Facebook: www.facebook.com/JaverosAnonimos
e-mail: javerosanonimos@gmail.com
**/
class CalculaFecha {
public static void main(String []args){
//Accedemos al metodo estatico a través del nombre de nuestra clase
System.out.println(CalculaFecha.calcularEdad("01-01-1999"));
/**Podemos quitar el static al metodo y se accedería así:
CalculaFecha cal= new CalculaFecha();
cal.calcularEdad("01-01-1999");*/
}
//Este es el método calcularEdad que se manda a llamar en el main
public static Integer calcularEdad(String fecha){
Date fechaNac=null;
try {
/**Se puede cambiar la mascara por el formato de la fecha
que se quiera recibir, por ejemplo año mes día "yyyy-MM-dd"
en este caso es día mes año*/
fechaNac = new SimpleDateFormat("dd-MM-yyyy").parse(fecha);
} catch (Exception ex) {
System.out.println("Error:"+ex);
}
Calendar fechaNacimiento = Calendar.getInstance();
//Se crea un objeto con la fecha actual
Calendar fechaActual = Calendar.getInstance();
//Se asigna la fecha recibida a la fecha de nacimiento.
fechaNacimiento.setTime(fechaNac);
//Se restan la fecha actual y la fecha de nacimiento
int año = fechaActual.get(Calendar.YEAR)- fechaNacimiento.get(Calendar.YEAR);
int mes =fechaActual.get(Calendar.MONTH)- fechaNacimiento.get(Calendar.MONTH);
int dia = fechaActual.get(Calendar.DATE)- fechaNacimiento.get(Calendar.DATE);
//Se ajusta el año dependiendo el mes y el día
if(mes<0 || (mes==0 && dia<0)){
año--;
}
//Regresa la edad en base a la fecha de nacimiento
return año;
}
}


  


9 Comentarios

  1. Hola disculpa es que estoy aprendiendo sobre esto. Una de las cosas que note es que no muestras la clase principal, bueno, la que tienen el metodo main, y bueno no se entonces como mandar a llamar semejante clase que has posteado, bueno tengo muchas dudas es mas que nada eso, no se si puedas ayudarme.

    ResponderBorrar
    Respuestas
    1. Hola, en el main estamos llamando un metodo estatico que esta dentro de la misma clase si vas a usar esta clase puedes acceder al metodo asi "CalculaFecha.calcularEdad("01-01-1999"));" o puedes quitarle el static al metodo y creas una instancia de la clase asi

      CalculaFecha calcularEdad= new CalculaFecha();
      calcularEdad.calcularEdad("01-02-2012");

      Espero haberte ayudado

      Borrar
  2. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  3. Muchas gracias!! sin embargo tengo una duda ... me gustaría obtener la edad en años y meses... como agregaría dicho calculo

    ResponderBorrar
  4. Hola!

    Una opción es multiplicar los años que tiene por 12, y sumar el numero de mes de la fecha actual. Por ejemplo para alguien que nacion en "01-01-1999" (tendría 15 años)

    15 x 12 = 180

    180 + 2 = 182 meses hasta el 18/02/2014

    Saludos!

    ResponderBorrar
  5. Gracias, fue muy practico tu código, un excelente aporte. Saludos

    ResponderBorrar
  6. muy bien explicado tu código...pero tengo una duda y como hago si quiero ingresa por teclado mi fecha de nacimiento..!

    ResponderBorrar

Publicar un comentario

Artículo Anterior Artículo Siguiente