Diferença entre datas (boleto febraban)  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
felipesp
Debugger
[Avatar]

Membro desde: 14/04/2004 14:16:52
Mensagens: 69
Localização: São Paulo
Offline

Estou montando a linha do código de barras do boleto segundo as normas da FEBRABAN.

Um dos trechos é o campo fator de vencimento que possui 4 posições e é o número de dias entre 07/nov/1997 e a data de vencimento.

Estou tentando fazer a conta assim:

Calendar cal = new GregorianCalendar(2025, Calendar.DECEMBER, 21);
Calendar base = new GregorianCalendar(1997, Calendar.NOVEMBER, 07);
long diff = cal.getTimeInMillis() - base.getTimeInMillis();
System.out.println("^"+(diff/1000/60/60/24));

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?

Felipe S. Gomes
phillmelon@gmail.com
http://felipe.blog.br/
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
Dieval Guizelini
Virtual Machine Man
[Avatar]

Membro desde: 05/07/2006 14:39:44
Mensagens: 570
Localização: Curitiba - PR
Offline

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...

Sun Certified Java Programmer 5.0
[WWW]
Dieval Guizelini
Virtual Machine Man
[Avatar]

Membro desde: 05/07/2006 14:39:44
Mensagens: 570
Localização: Curitiba - PR
Offline

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:



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.

Sun Certified Java Programmer 5.0
[WWW]
felipesp
Debugger
[Avatar]

Membro desde: 14/04/2004 14:16:52
Mensagens: 69
Localização: São Paulo
Offline

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.

Muito obrigado.

Felipe S. Gomes
phillmelon@gmail.com
http://felipe.blog.br/
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team