Calcule a idade corretamente em Java

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (4)  (1)

Em algum momento de sua vida como programador, seu sistema terá como Requisito Funcional o cálculo da idade baseado em uma data fornecida.



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:

1) Java SE 5 (1.5) plenamente instalado e configurado

2) 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 util 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. :)

OBS: Este artigo, bem como o código-fonte, é de livre divulgação desde que citada a fonte.

Dave Fernandes – Analista Programador Java - UFPA

Blog: http://consubr.blogspot.com

Email: consubr@yahoo.com.br

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?