Calcular intervalo entre datas (anos diferentes)

Olah pessoal…

tenho o método seguinte

public int intervalo(){ Calendar calendar = Calendar.getInstance() ; calendar.setTime(begin); int b = calendar.get(Calendar.DAY_OF_YEAR); calendar.setTime(end); int e = calendar.get(Calendar.DAY_OF_YEAR); return e-b; }

Soh q, por pegar o dia relativo ao ano, se eu tiver duas datas com anos diferentes, o cálculo será incorreto…

Embora seja simples fazer uma lógica pra resolver isso, naum toh cum mt tempo pra brincar cum isso agora… então alguém sabe de algum método existente q facilite o trabalho??? :roll:

Muitíssimo Obrigada!!! :wink:

Se já existe algum método pronto não sei, eu não conheço…

mas vc pode multiplicar o ano correspondente de cada data ao seu inteiro, assim vc terá uma diferença em dias das duas datas…

isso não resolve seu problema?

[]s Victor…

Olah Victor…

Desculpe, mas naum peguei a ideia… o q vc quis dizer com:

Tks!!! :slight_smile:

ehhe essa frase ficou mal feita mesmo eim…

ex: 10/01/2004 data 1

e 10/01/2005 data 2

pelo seu código isso retornará (10 -10) ou seja 0

pra resolver isso vc faz:

(2005 -2004)*365 + (10 - 10)

e essa expressão toda vc coloca em seu return…

fica facil implementar e vc receberá a diferença em dias entre as 2 datas

PS:. não tinha como vc entender eu escrevi errado : era pra ser " a diferença entra os anos correspondentes" heheheh e faltou ainda multiplicar por 365 ahuahua

Vlw Victor!!! Brigadão!!! :grin:

Agora soh me resta fazer o cálculo dos anos bissextos… Deve ter algum método q verifique isso, vou dar uma pesquisada… Tks! :wink:

Patty, a classe GregorianCalendar tem um metodo q informa se um ano é bissexto o isLeapYear(ano)

Ai nesse caso acho que uma soma seria mais viavel que uma multiplicação como o Victor sugeriu.

dif = anoFinal - anoInicial
for (int i = anoInicial; i<anoFinal; i++){
    if (cal.isLeapYear(i)) {
    // é bisexto
        dias += 366;
    }else{
        //não é bisexto
        dias += 365;
    }
}
//depois vc soma a diferença entre os dias

Só da uma arrumada, pq eu escrevi o codigo meio correndo e não cheguei a testar, mas acredito que seja +/- isso, ok?