Comparando datas e obtendo idades

3 respostas
P

Olá pessoal, preciso fazer um gráfico com as idades dos clintes, por exemplo: 10 tem menos de 10 anos, 20 tem entre 10 e 20 etc, etc… fazer o gráfico eu até consegui blz, só estava pensando e não achei solução para que através de uma data 10/10/2004 eu obtenha a idade dele, alguém pode me ajudar?

3 Respostas

D

Experimente analisar este código:

GregorianCalendar gg = new GregorianCalendar();
		
		Date dataNascimento = new Date();
		dataNascimento.setDate(15);
		dataNascimento.setMonth(gg.MAY);
		dataNascimento.setYear(1965);
	
		Date dataAtual = new Date();
		dataAtual.setYear(dataAtual.getYear() + 1900);
		
		Date diferencaAnos = new Date((long) dataAtual.getTime() - dataNascimento.getTime());
		JOptionPane.showMessageDialog(null, "A pessoa possui: " + (diferencaAnos.getYear() - 70) + " anos");
M

æ dok, muito bom o seu código, não querendo desmerecê-lo, mas desta forma há bugs, se quiser testar faça desta forma:
ponha o mês como october e a data 23 e depois a data 24, vão dar valores de idade diferentes, sendo que a data de hoje é dia 25, nada a ver diretamente com as datas apresentadas para teste.

Acredito então que a haja melhor forma, ou melhor acredito que deve haver algo pronto que faça este cálculo, mas no entanto preferi desenvolver um método próprio:
public class DateTest {
  public static void main(String[] args) throws Exception{
  Date dateNasc = new SimpleDateFormat("dd/MM/yyyy").parse("26/10/1984");
  Date dateAtua = new Date();
        
  int Idade = dateAtua.getYear() - dateNasc.getYear();  
  if (dateAtua.getMonth() > dateNasc.getMonth())
    System.out.print(Idade);
  else if (dateAtua.getDate() >= dateNasc.getDate())
    System.out.print(Idade);
  else 
    System.out.print(Idade - 1);
  } 
}

Espero que ajude,
Abraço,
Maicon

D

Concordo com vc maicon_b, o meu código leva em consideração a o tempo em milissegundos, o que pode ocorrer distorções em datas próximas do aniversário da pessoa.

:grin: :grin:

Criado 25 de outubro de 2004
Ultima resposta 25 de out. de 2004
Respostas 3
Participantes 3