En este rápido tutorial, veremos cómo calcular la edad utilizando JAVA 8, JAVA 7 y las bibliotecas Joda-Time.
En todos los casos, tomaremos la fecha de nacimiento y la fecha actual como entrada y devolveremos la edad calculada en años.
Usando JAVA 8
Java 8 introdujo una nueva API Fecha-Hora para trabajar con fechas y horas, basada en gran medida en la biblioteca Joda-Time.
En Java 8, podemos utilizar java.time.LocalDate para nuestra fecha de nacimiento y la fecha actual, y luego usar Period para calcular su diferencia en años:
public int calcularEdad(LocalDate fechaDeNacimiento, LocalDate fecha) {
return Period.between(fechaDeNacimiento, fecha).getYears();
}
Usando Joda-Time
Si Java 8 no es una opción, todavía podemos obtener el mismo tipo de resultado de Joda-Time, un estándar de facto para las operaciones de fecha-hora en el mundo pre-Java 8.
public int calcularEdad(org.joda.time.LocalDate fechaDeNacimiento, org.joda.time.LocalDate fecha) {
Years edad = Years.yearsBetween(fechaDeNacimiento, fecha);
return edad.getYears();
}
Usando JAVA 7
A falta de una API específica en Java 7, tenemos que arreglárnoslas por nuestra cuenta, por lo que existen varios enfoques.
Por ejemplo, podemos utilizar java.util.Date:
public int calcularEdad(Date fechaDeNacimiento, Date fecha) {
DateFormat formatter = new SimpleDateFormat("yyyyMMdd");
int d1 = Integer.parseInt(formatter.format(fechaDeNacimiento));
int d2 = Integer.parseInt(formatter.format(fecha));
int edad= (d2 - d1) / 10000;
return edad;
}
Aquí, convertimos los objetos fechaDeNacimiento y fecha dados en enteros y encontramos la diferencia entre ellos, y mientras no sigamos en Java 7 dentro de 8000 años, este enfoque debería funcionar hasta entonces.