[RESOLVIDO] Erro calculo de Idade

2 respostas
Vander_Carlos

Bom o código que eu tenho aqui pra calcular a idade gera alguns erros, percebi que o código aqui as vezes gera o número de meses negativo.

Código:

DateFormat fmt = new SimpleDateFormat("dd/MM/yyyy");
        Date data_nascimento = null;
        Date data_atual = null;

        try {
            data_nascimento = new Date(fmt.parse(ctDataNascimento.getText()).getTime());
            data_atual = new Date(fmt.parse(formatarDate.format(data)).getTime());
        } catch (ParseException e) {
            e.printStackTrace();
        }

            Calendar cal1 = Calendar.getInstance();
            Calendar cal2 = Calendar.getInstance();
            cal1.setTime((data_nascimento));
            cal2.setTime(data_atual);
            int year1 = cal1.get(Calendar.YEAR);
            int year2 = cal2.get(Calendar.YEAR);

            int month1 = cal1.get(Calendar.MONTH);
            int month2 = cal2.get(Calendar.MONTH);

            int day1 = cal1.get(Calendar.DAY_OF_MONTH);
            int day2 = cal2.get(Calendar.DAY_OF_MONTH);

            int meses = month2 - month1;
            int idade = year2 - year1;

            if ( (month2 < month1) || ( (month2 == month1) && (day2 < day1) ) ) {
                idade -= 1;
            } else{
         
            }

            ctIdade.setText(idade + " anos e " + meses + " meses");

Por exemplo, se eu coloco a data: 02/03/1999 ele está retornando 12 anos e -1 meses.

:S

[]'s

2 Respostas

InicianteJavaHenriqu

Olá Vander Carlos :smiley:

De uma olhada neste tópico (talvez ajude :wink: ), com algumas adaptações vc pode fazer o seu calculo de idade:
:arrow: http://www.guj.com.br/java/263383-calcular-idade

flw :thumbup:

Vander_Carlos

Eae Henrique blz?

Bom, dei uma olha lá mais não precisou, era só um detalha que eu não tinha prestado atenção.

Vamos supor

Atual: 15/02/2012
Nasc: 01/04/1991

Como no código só fazia isso:
int meses = month2 - month1;
// month2 = atual, month1 = nasc
De um jeito ou de outro ia ter um mês negativo, a não ser que o mês da data atual fosse sempre 12. E eu não tinha percebido justamente pq tinha feito em dezembro LOL. Então só fiz isso:
if (month2 > month1) {

                 meses = month2 - month1;

            } else {
                  meses = month1 - month2;
            }
[]'s
Criado 14 de fevereiro de 2012
Ultima resposta 15 de fev. de 2012
Respostas 2
Participantes 2