Método para calcular la edad de una persona. Espero que os sirva.
public static String getEdad(Date fechaNacimiento) { if (fechaNacimiento != null) { SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); StringBuilder result = new StringBuilder(); if (fechaNacimiento != null) { result.append(sdf.format(fechaNacimiento)); result.append(" ("); Calendar c = new GregorianCalendar(); c.setTime(fechaNacimiento); result.append(calcularEdad(c)); result.append(" años)"); } return result.toString(); } return ""; } private static int calcularEdad(Calendar fechaNac) { Calendar today = Calendar.getInstance(); int diffYear = today.get(Calendar.YEAR) - fechaNac.get(Calendar.YEAR); int diffMonth = today.get(Calendar.MONTH) - fechaNac.get(Calendar.MONTH); int diffDay = today.get(Calendar.DAY_OF_MONTH) - fechaNac.get(Calendar.DAY_OF_MONTH); // Si está en ese año pero todavía no los ha cumplido if (diffMonth < 0 || (diffMonth == 0 && diffDay < 0)) { diffYear = diffYear - 1; // no aparecían los dos guiones del // postincremento :| } return diffYear; }
me gustaria saber como calcular o saber la fecha de nacimiento pero con la fecha actual : entonces la respuesta sea dia mes año
ejemplo logica
06/05/2015
06/08/2015
y como respuesta en el sistema debe salir:en años… meses…. dias…
ayudenme
aqui un codigo que te puede ayudar. 😉
import java.io.BufferedReader;
import java.util.*;
import java.io.*;
@SuppressWarnings(«unused»)
public class fecha {
public static void main(String args[]) throws IOException {
BufferedReader bufEntrada = new BufferedReader(new InputStreamReader(System.in));
double ano;
double anoactual;
double anofinal;
double año;
double añoactual;
double añofinal;
double dia;
double diaactual;
double diafinal;
double dias;
int mes;
double mesactual;
double meses;
double mesfinal;
diaactual = 10;
mesactual = 3;
anoactual = 2017;
anofinal = 0;
diafinal = 0;
meses = 12;
mesfinal = 0;
System.out.println(«digite su fecha de nacimiento(dia,mes,año)01/3/2010»);
dia = Double.parseDouble(bufEntrada.readLine());
mes = Integer.parseInt(bufEntrada.readLine());
ano = Double.parseDouble(bufEntrada.readLine());
if (mes<=mesactual && dia<diaactual) {
anofinal = (anoactual-ano);
}
if (diamesactual) {
anofinal = (anoactual-ano)-1;
} else {
if (mes=diaactual) {
anofinal = (anoactual-ano);
}
}
if (mesactual=mesactual && dia>=diaactual) {
anofinal = anoactual-ano;
}
if (mes>mesactual && dia>diaactual) {
anofinal = (anoactual-ano)-1;
}
if (mes>=1 && mesmeses && mes<1) {
System.out.println("esta fuera del rango de los meses");
} else {
if (mes=1) {
if (mes>mesactual) {
mesfinal = (meses+mesactual)-mes;
}
if (mesmeses && mes<1) {
System.out.println("esta fuera del rango de los meses");
} else {
if (mes=1) {
mesfinal = (meses+mesactual)-mes;
}
if (mesmeses && mes<1) {
System.out.println("esta fuera del rango de los meses");
} else {
if (mes=1) {
mesfinal = (meses+mesactual)-mes;
}
if (mesmeses && mes<1) {
System.out.println("esta fuera del rango de los meses");
} else {
if (mes=1) {
mesfinal = (meses+mesactual)-mes;
}
if (mesmeses && mes<1) {
System.out.println("esta fuera del rango de los meses");
} else {
if (mes=1) {
mesfinal = (meses+mesactual)-mes;
}
if (mesmeses && mes<1) {
System.out.println("esta fuera del rango de los meses");
} else {
if (mes=1) {
mesfinal = (meses+mesactual)-mes;
}
if (mesmeses && mes<1) {
System.out.println("esta fuera del rango de los meses");
} else {
if (mes=1) {
mesfinal = (meses+mesactual)-mes;
}
if (mesmeses && mes<1) {
System.out.println("esta fuera del rango de los meses");
} else {
if (mes=1) {
mesfinal = (meses+mesactual)-mes;
}
if (mesmeses && mes<1) {
System.out.println("esta fuera del rango de los meses");
} else {
if (mes=1) {
mesfinal = (meses+mesactual)-mes;
}
if (mesmeses && mes<1) {
System.out.println("esta fuera del rango de los meses");
} else {
if (mes=1) {
mesfinal = (meses-mesactual)-mes;
}
if (mesmeses && mes<1) {
System.out.println("esta fuera del rango de los meses");
} else {
if (mes=1) {
mesfinal = (meses-mesactual)-mes;
}
if (mesmeses && mes<1) {
System.out.println("esta fuera del rango de los meses");
} else {
if (mes=1) {
mesfinal = (meses+mesactual)-mes;
}
if (mes<mesactual) {
mesfinal = mesactual-mes;
}
}
break;
}
} else {
System.out.println("el numero del mes no coincide");
}
System.out.println("usted tiene "+anofinal+" años, "+mesfinal+" meses y "+diafinal+" dias");
}
}
aqui dejo una función para calcular la edad de una persona. Realmente puede servir para calcular la diferencia en años entre una fecha cualquiera y la actual.
import java.util.Calendar;
import java.util.GregorianCalendar;
public class cal {
public static int calcularEdad(Calendar fechaNac) {
Calendar fechaActual = Calendar.getInstance();
// Cálculo de las diferencias.
int anios = fechaActual.get(Calendar.YEAR) – fechaNac.get(Calendar.YEAR);
int meses = fechaActual.get(Calendar.MONTH) – fechaNac.get(Calendar.MONTH);
int dias = fechaActual.get(Calendar.DAY_OF_MONTH) – fechaNac.get(Calendar.DAY_OF_MONTH);
// Hay que comprobar si el día de su cumpleaños es posterior
// a la fecha actual, para restar 1 a la diferencia de años,
// pues aún no ha sido su cumpleaños.
if(meses < 0 // Aún no es el mes de su cumpleaños
|| (meses==0 && dias < 0)) { // o es el mes pero no ha llegado el día.
anios–;
}
return anios;
}
public static void main(String[] args)
{
{
System.out.println(calcularEdad(new GregorianCalendar(1995,11,22)));
}
}}