Calcular a idade entre duas datas(GregorianCalendar)

Ola!

Tenho 2 datas, predefinidas do tipo GregorianCalendar

por ex:

dataInicio=new GregorianCalendar(5,5,2000); dataFim=new GregorianCalendar(2,5,2005);

se subtrair só os anos ele dá-me 5 anos mas está errado, devia dar 4!

usei o seguinte:

idade=dataFim.get(Calendar.YEAR) - dataInicio.get(Calendar.YEAR)

existe algum metodo que calcule isto correctamente? qual a melhor maneira? para dar a idade correcta?

Cumps.

nao conheco nenhum metodo que faça o que voce pediu, aconselho fazer um metodo que calcule isso, mas jah usei um metodo que, para minha aplicacao, se mostrou util, embora nao seja totalmente exato:

long diferenca = data1.getTimeInMillis() - data2.getTimeInMillis();
diferenca /= 1000; //data em segundos
diferenca /= 60; //data em minutos
diferenca /= 60; //data em horas
diferenca /= 24; //data em dias
diferenca /= 30; //data em meses
diferenca /= 12; //data em anos

espero que te ajude tambem.

[quote]
se subtrair só os anos ele dá-me 5 anos mas está errado, devia dar 4![/quote]

Não é ele que tá errado, é sua lógica que tá errada!

Olha só, vc tá subtraindo 2000 de 2005, o resultado tem é que ser 5 mesmo. Se for 4 aí é que tá errado :slight_smile:

O negócio é que depois que vc fizer isso vc ia ter que descontar o mês e dia.

Por exemplo, nesse caso se vc subtrair o ano vc tem +5, se subtrair o mes vc tem 0, e se subtrair o dia vc tem -3, ou seja, vc tem que somar 0 meses aos 5 anos e somar -3 dias aos 5 anos…

Mas é mais fácil fazer do jeito que o javaAdicted disse…

[]'s
carisio

Boas!

obrigado javaAdicted pela dica!

Eu queria era mm saber se para este tipo de casos se já existia algum metodo já feito.

Sendo assim vou mm que proteger pra todos os casos.

Cumps.