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)
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)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | |
} | |
} |
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.
ResponderBorrarHola, 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
BorrarCalculaFecha calcularEdad= new CalculaFecha();
calcularEdad.calcularEdad("01-02-2012");
Espero haberte ayudado
Este comentario ha sido eliminado por el autor.
ResponderBorrarAA y excelente Aporte
Borrarun gran aporte
ResponderBorrarMuchas gracias!! sin embargo tengo una duda ... me gustaría obtener la edad en años y meses... como agregaría dicho calculo
ResponderBorrarHola!
ResponderBorrarUna 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!
Gracias, fue muy practico tu código, un excelente aporte. Saludos
ResponderBorrarmuy bien explicado tu código...pero tengo una duda y como hago si quiero ingresa por teclado mi fecha de nacimiento..!
ResponderBorrarPublicar un comentario