| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/09/2006 21:12:55
|
felipesp
Debugger
![[Avatar]](/images/avatar/c9efe5f26cd17ba6216bbe2a7d26d490.jpg)
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/ |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/09/2006 00:35:23
|
Dieval Guizelini
Virtual Machine Man
![[Avatar]](/images/avatar/9fc92b9c69b711dcb880ccb743fc6f06.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/09/2006 00:39:45
|
Dieval Guizelini
Virtual Machine Man
![[Avatar]](/images/avatar/9fc92b9c69b711dcb880ccb743fc6f06.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/09/2006 13:57:48
|
felipesp
Debugger
![[Avatar]](/images/avatar/c9efe5f26cd17ba6216bbe2a7d26d490.jpg)
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/ |
|
|
 |
|
|