Problema com Datas

3 respostas
F

To com um problema com data muito estranho. Preciso comparar a data atual com uma data que é digitada. Peguei um código na net que ate funciona, mas acontece algo sem nexo. Qdo rodo o programa na parte da manhã e tarde, ele retorna a quantidade certa de dias. Mas, quando rodo a noite, ele retorna um dia a mais. Não imagino oq seja… Enfim, o código:

private void ultimoPartoFocusLost(java.awt.event.FocusEvent evt) { // TODO add your handling code here: Date date = new Date(); String data = SimpleDateFormat.getDateInstance(SimpleDateFormat.SHORT).format(date); String UP = ultimoParto.getText().toString(); SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy"); try { Date data_atual = format.parse(data); Date data_UP = format.parse(UP); long diasP = (data_atual.getTime() - data_UP.getTime()) / (1000 * 60 * 60 * 24); diasDeParida.setText(String.valueOf(diasP)); } catch (Exception ex) { System.err.println(ex); } }

Não sei se o problema é na forma de capturar a data no sistema ou nas contas. Eu li uma vez que é melhor usar o Calendar, mas nao descobri como fazer isso tudo nele.

3 Respostas

nel

Boa tarde.

Não parei para analisar o seu código, mas o problema pode estar sendo gerado por esta considerando horário, enfim, teria que analisar ele com calma.
Mas use a API Joda Time, ela foi desenvolvida justamente para manipulação com Datas e creio que será muito útil para a sua necessidade.

Consegue pegar a diferença de dias, semanas, meses, anos, minutos, segundos e por ai vai :slight_smile:
Abraços.

F

Ahhh entendi. Vo estudar essa API. Vlw a dica

L

Na verdade… quando vc faz

long diasP = (data_atual.getTime() - data_UP.getTime()) / (1000 * 60 * 60 * 24);
o método getTime() retorna com os milisegundos juntos…então vc tem que zerar minutos e milisegundos pra fazer a difereça de dias

Criado 28 de agosto de 2010
Ultima resposta 29 de ago. de 2010
Respostas 3
Participantes 3