Como Caucular Idade?

Pessoal minha duvida é simples pra muito… minha data de nascimento é 14/10/1982

como faço para caucular minha idade encima dessa data?

Oi Leandro, se você quiser saber a lógica é essa:

Idade = dataAtual - dataNascimento;

vlw

Meu probleminha nao está na logica é o seguinte quero saber tb se a pessoa ja fez aniversario esse ano se nao fez quando vai fazer, qts dias falta qts meses etc…

Veja aqui e aqui

http://www.guj.com.br/posts/list/21062.java

aqui também

NAO resolveu pq oque eu quero é o seguinte nasci em 05/03/2000 e minha data atual é 06/04/2010
ou seja eu quero o resultado 10 anos e 1 mese 1 dia :slight_smile:

coloca a data invertida 20100406 e subtrai a outra 20100406 - 20000305 = 100101.

Caraca, nunca tinha visto… curti.

curti [2]

ta ai naum conhecia, mta boa!

E quando acontece isso:

Data atual: 06/04/2010
NAscimento: 20/06/1980

20100406 - 19800620 = 299786

Então:

  1. 86 dias = 2 meses e 26 dias.
  2. 97 + 2 mes = 99 meses
  3. 99 / 12 = 8,25 anos (nem me dei a trabalho de calcular o ,25 em meses)
  4. 29 + 8,25 = 37,5 anos

Seguindo esta lógica, eu teria hoje mais de 37 anos. E não tenho( ainda! ). Só tenho 29.

[quote=leandro-maanaim]NAO resolveu pq oque eu quero é o seguinte nasci em 05/03/2000 e minha data atual é 06/04/2010
ou seja eu quero o resultado 10 anos e 1 mese 1 dia :)[/quote]

Você só tem 10 anos oO?

Rlx foi só um exemplo rsrs

Pessoal ola só vou colar o codigo aki e vcs dao uma olhada.

package DATA;

public class DATA2{

    public DATA2(){
        try{
            java.text.SimpleDateFormat df = new java.text.SimpleDateFormat ("dd/MM/yyyy hh:mm:ss");
            java.util.Date d1 = df.parse("14/10/1982 23:00:00");//data de Nascimento
            java.util.Date d2 = df.parse("15/10/2010 23:00:00");//Exemplo da minha Data Atual.
            System.out.println("DATA 1: "+d1.toLocaleString());
            System.out.println("DATA 2: "+d2.toLocaleString());

            System.out.println("DIFERENCA DE ANOS: "+ getDifAno(d1,d2));
            System.out.println("DIFERENCA DE MESES: "+ getDifMes(d1,d2));
            System.out.println("DIFERENCA DE DIAS: "+ getDifDia(d1,d2));
            System.out.println("DIFERENCA DE HORAS: "+ getDifHora(d1,d2));
            System.out.println("DIFERENCA DE MINUTOS: "+ getDifMinuto(d1,d2));
            System.out.println("DIFERENCA DE SEGUNDOS: "+ getDifSegundo(d1,d2));
            System.out.println("DIFERENCA DE MILISEGUNDOS: "+ getDifMilisegundo(d1,d2));
        }catch(java.text.ParseException p){
            p.printStackTrace();
        }
    }

    public static void main(String[] args) {
        DATA2 difDatas = new DATA2();
    }

    private long getDifAno(java.util.Date dtMenor, java.util.Date dtMaior){
        return dtMaior.getYear() - dtMenor.getYear();
    }

    private long getDifMes(java.util.Date dtMenor, java.util.Date dtMaior){
        return dtMaior.getMonth() - dtMenor.getMonth() + (getDifAno(dtMenor,dtMaior) * 12);
    }

    private long getDifDia(java.util.Date dtMenor, java.util.Date dtMaior){
        return (dtMaior.getTime() - dtMenor.getTime()) / (1000*60*60*24);
    }

    private long getDifHora(java.util.Date dtMenor, java.util.Date dtMaior){
        return (dtMaior.getTime() - dtMenor.getTime()) / (1000*60*60);
    }

    private long getDifMinuto(java.util.Date dtMenor, java.util.Date dtMaior){
        return (dtMaior.getTime() - dtMenor.getTime()) / (1000*60);
    }

    private long getDifSegundo(java.util.Date dtMenor, java.util.Date dtMaior){
        return (dtMaior.getTime() - dtMenor.getTime()) / (1000);
    }

    private long getDifMilisegundo(java.util.Date dtMenor, java.util.Date dtMaior){
        return dtMaior.getTime() - dtMenor.getTime();
    }

}

Olha oque ele me retorna.
DATA 1: 14/10/1982 23:00:00
DATA 2: 15/10/2010 23:00:00
DIFERENCA DE ANOS: 28
DIFERENCA DE MESES: 336
DIFERENCA DE DIAS: 10228
DIFERENCA DE HORAS: 245472
DIFERENCA DE MINUTOS: 14728320
DIFERENCA DE SEGUNDOS: 883699200
DIFERENCA DE MILISEGUNDOS: 883699200000

Nao deveria de me retornar 29 anos e 0 meses e 1 dia?
como faço pra ele me retornar 29 anos e 0 mes e 1 dia etc…?

[quote=pvrsouza]E quando acontece isso:

Data atual: 06/04/2010
NAscimento: 20/06/1980

20100406 - 19800620 = 299786

Então:

  1. 86 dias = 2 meses e 26 dias.
  2. 97 + 2 mes = 99 meses
  3. 99 / 12 = 8,25 anos (nem me dei a trabalho de calcular o ,25 em meses)
  4. 29 + 8,25 = 37,5 anos

Seguindo esta lógica, eu teria hoje mais de 37 anos. E não tenho( ainda! ). Só tenho 29.

[/quote]

É retira o que disse, num curti não… kkkkkkkkk

[quote=leandro-maanaim]Pessoal ola só vou colar o codigo aki e vcs dao uma olhada.

Olha oque ele me retorna.
DATA 1: 14/10/1982 23:00:00
DATA 2: 15/10/2010 23:00:00
DIFERENCA DE ANOS: 28
DIFERENCA DE MESES: 336
DIFERENCA DE DIAS: 10228
DIFERENCA DE HORAS: 245472
DIFERENCA DE MINUTOS: 14728320
DIFERENCA DE SEGUNDOS: 883699200
DIFERENCA DE MILISEGUNDOS: 883699200000

Nao deveria de me retornar 29 anos e 0 meses e 1 dia?
como faço pra ele me retornar 29 anos e 0 mes e 1 dia etc…?[/quote]

Deveria retornar 28 Anos 0meses e 1dia… para retornar isso vc ta usando as datas do calendario onde fev vai até 28/29 dias e etc… pra ter esse resultado vc precisa usar Calendar ou o GregorianCalendar

Acho q da pra fazer assim tb… só que vc vai ter problema qdo o mes ou dia atual for menor que o do nascimento…

Duvida: Ali no seu

private long getDifMes(java.util.Date dtMenor, java.util.Date dtMaior){ return dtMaior.getMonth() - dtMenor.getMonth() + (getDifAno(dtMenor,dtMaior) * 12); }
pq vc colocou getDifAno(dtMenor,dtMaior) * 12 ?? isso resulta em 28 * 12 = 336 (o resultado q saiu para os meses)

iiiiiiiiiiiiiiiii, falhou…
20100406 - 19800620 = 299786

é o seguinte… tentando convencer o chefe…

o 97 me diz que falta 3 unidades para completar a proxima unidade (unidade de ano)… ou seja, faltam 3 meses pra completar um ano… estou com 9 meses
e o 86 a mesma coisa… faltaram 14 dias pra completar uma unidade de mes ou seja 30 - 14 = estou com 16 dias

no final… 29 anos 9 meses e 16 dias… ta certo?

:wink:

[quote=humberto.lima]iiiiiiiiiiiiiiiii, falhou…
20100406 - 19800620 = 299786

é o seguinte… tentando convencer o chefe…

o 97 me diz que falta 3 unidades para completar a proxima unidade (unidade de ano)… ou seja, faltam 3 meses pra completar um ano… estou com 9 meses
e o 86 a mesma coisa… faltaram 14 dias pra completar uma unidade de mes ou seja 30 - 14 = estou com 16 dias

no final… 29 anos 9 meses e 16 dias… ta certo?

:wink:

[/quote]

Caracaaaa curti msm kkkkkkkkkk eu tentei fazer isso mas num consegui pensar dessa forma… agora assim… vc usou 30 - 14… ta errado… os meses não são todos de 30 dias. em 20/03/2010 ele tinha 29 anos e 9 meses, certo? passado 11 dias ele entrou em abril(pois março vai até 31) e + 6 dias de abril, ele tem 17 dias.

“Num entindi oque vcs falô” :S