Algum dia você vai precisar deste código!
Em algum momento de sua vida como programador, seu sistema terá como Requisito Funcional o cálculo da idade baseado em uma data fornecida. Este micro artigo têm como objetivo apresentar uma solução pronta para o uso Ready to Use!
Pré-Requisitos:
- Java SE 5 (1.5) plenamente instalado e configurado
- NetBeans 5.5 ou a IDE de sua Preferência
Calculando a idade usando como parâmetro uma String
Ao executar o código abaixo a resposta no console terá que ser 29
Listagem 01. Classe Main.
package artigo1;
public class Main {
public static void main(String args){
Utils util = new Utils();
System.out.println(util.calculaIdade("20-08-1977","dd-MM-yyyy"));
}
}
Detalhe: conforme você verificou este método precisa de dois parâmetros:1) a data fornecida para o cálculo da idade. 2) o formato de data que você está utilizando ex: MM-dd-yyyy ou MM-yyyy-dd e etc… Acrescento ainda que este método é generalizado, isto é, pode usar qualquer formato de data e ele devolverá a idade correta.
A Listagem 02 abaixo apresenta a classe útil referenciada acima:
- package artigo1;
- import java.util.Date;
- import java.text.DateFormat;
- import java.text.SimpleDateFormat;
- import java.util.Calendar;
- import java.util.GregorianCalendar;
- import java.io.*;
public class Utils {
//Calcula a Idade baseado em String. Exemplo: calculaIdade("20/08/1977","dd/MM/yyyy");
public static int calculaIdade(String dataNasc, String pattern){
DateFormat sdf = new SimpleDateFormat(pattern);
Date dataNascInput = null;
try {
dataNascInput= sdf.parse(dataNasc);
} catch (Exception e) {}
Calendar dateOfBirth = new GregorianCalendar();
dateOfBirth.setTime(dataNascInput);
// Cria um objeto calendar com a data atual
Calendar today = Calendar.getInstance();
// Obtém a idade baseado no ano
int age = today.get(Calendar.YEAR) - dateOfBirth.get(Calendar.YEAR);
dateOfBirth.add(Calendar.YEAR, age);
if (today.before(dateOfBirth)) {
age--;
}
return age;
}
}
Calculando a idade usando como parâmetro um java.util.Date
A Código abaixo apresenta o mesmo método com apenas uma diferença, pode ser utilizado um objeto do tipo java.util.Date para calcular a idade.
Listagem 3:
//Calcula a Idade baseado em java.util.Date
public static int calculaIdade(java.util.Date dataNasc){
Calendar dateOfBirth = new GregorianCalendar();
dateOfBirth.setTime(dataNasc);
// Cria um objeto calendar com a data atual
Calendar today = Calendar.getInstance();
// Obtém a idade baseado no ano
int age = today.get(Calendar.YEAR) - dateOfBirth.get(Calendar.YEAR);
dateOfBirth.add(Calendar.YEAR, age);
//se a data de hoje é antes da data de Nascimento, então diminui 1(um)
if (today.before(dateOfBirth)) {
age--;
}
return age;
}
Até a próxima.
Para Baixar o Código-Fonte Deste Artigo Clique Aqui. Ou http://br.geocities.com/consubr/artigos/Artigo1_Calcula_Idade.zip
OBS: Este artigo, bem como o código-fonte, é de livre divulgação desde que citada a fonte.