Segundo o manual da FEBRABAN, deveria resultar em 9999, mas eu recebo 10271. Quando as datas são mais próximas a diferença de dias cai proporcionalmente, o que me faz crer que o bug deve serelacionar a ano bissexto.
Alguém sabe como eu deveria fazer paracalcular isso?
Você tem certeza que a data base da FEBRABAN não é 07/10/1997 ou seja outubro e não novembro?
Vou fazer uns testes e posto aqui depois…
Dieval_Guizelini
No manual da Caixa eu tenho que as datas são:
base = 07/10/1997
e máximo: 21/02/2025
Código de teste:
Calendar base = new GregorianCalendar(1997, Calendar.OCTOBER, 07);
Calendar p;
long dif;
long ant = 0L;
for(int i=1998; i<=2025; i++ ) {
p = new GregorianCalendar(i, Calendar.FEBRUARY, 21 ) ;
dif = p.getTimeInMillis() - base.getTimeInMillis();
System.out.println( ""+(dif/86400000) + " dif ano anterior: " + ((dif-ant)/86400000) );
ant = dif;
}
Resultado:
137 dif ano anterior: 364
502 dif ano anterior: 365
867 dif ano anterior: 364
1233 dif ano anterior: 366
1598 dif ano anterior: 365
1963 dif ano anterior: 365
2328 dif ano anterior: 365
2694 dif ano anterior: 366
3059 dif ano anterior: 365
3424 dif ano anterior: 365
3789 dif ano anterior: 365
4155 dif ano anterior: 366
4520 dif ano anterior: 365
4885 dif ano anterior: 365
5250 dif ano anterior: 365
5616 dif ano anterior: 366
5981 dif ano anterior: 365
6346 dif ano anterior: 365
6711 dif ano anterior: 365
7077 dif ano anterior: 366
7442 dif ano anterior: 365
7807 dif ano anterior: 365
8172 dif ano anterior: 365
8538 dif ano anterior: 366
8903 dif ano anterior: 365
9268 dif ano anterior: 365
9633 dif ano anterior: 365
9999 dif ano anterior: 366
Talvez seja este o seu problema…
fw.
felipesp
Dieval,
Obrigado pelo post. Consegui calcular direitinho. O meu problema era o seguinte: no manual vem 5 datas para testarmos o código. Pois é, no meu manual a última data estava errada! Eu fiz uma busca no google e encontrei um manual com a data que você passou (21.02.2025 para 9999 dias).
Bem, ainda bem que era só isso. Mas até eu descobrir perdi algumas horas.