(aproveitando o post)
Galera,
Estou com um pequeno problema com o fator de vencimento por causa do ano bissexto.
Se fizermos:
[code]String[] data = “17/11/2010”.split("/");
String dia = data[0];
String mes = data[1];
String ano = data[2];
Calendar dataBase = GregorianCalendar.getInstance(new Locale(“pt”,“BR”));
dataBase.set(1997, 10, 7); // 07 de Outubro de 1997
Calendar vencimento = GregorianCalendar.getInstance();
vencimento.set(Integer.parseInt(ano), Integer.parseInt(mes), Integer.parseInt(dia));// = new GregorianCalendar(Integer.parseInt(ano), Integer.parseInt(mes)-1, Integer.parseInt(dia));
long diferenca = vencimento.getTimeInMillis() - dataBase.getTimeInMillis();
long diferencaDias = diferenca/(246060*1000);
System.out.println(“Gregorian:\t”+ diferencaDias);[/code]
Teremos como resposta 4788, quando deveria ser 4789 por causa do ano bissexto.
Como posso acertar isso? O GregorianCalendar tem o metodo isLeapYear, mas não faz diferença ao subtrair os dias? Ou eu que esqueci de informar algum parãmetro?
Vlw
Opa… resolvido…
Eu devo usar o GregorianCalendar ao invés do Calendar… ficando assim
[code]GregorianCalendar dataBase2 = new GregorianCalendar(1997, Calendar.OCTOBER, 7);
GregorianCalendar vencimento2 = new GregorianCalendar(Integer.parseInt(ano), Calendar.NOVEMBER, Integer.parseInt(dia));
long diferenca = vencimento2.getTimeInMillis() - dataBase2.getTimeInMillis();
long diferencaDias = diferenca/(246060*1000);
System.out.println(“GregorianCalendar:\t\t”+ diferencaDias);[/code]
Esse post me ajudou: http://www.guj.com.br/posts/list/42462.java
Obs.: Só um detalhe… tome cuidado com o campo do mês, onde vai de 0 (Janeiro) até 11(Dezembro).