Calculando número de dias entre datas

5 respostas
L

Olá, amigos,

Venho tentando resolver uma questão há tempos, mas, sem conseguir, cada hora aparece um problema. No meu aplicativo tenho duas JTextField, T1 e T2, onde o usuário digita datas no formato, exemplo,

Na T1: 26/12/2005
Na T2: 17/04/2006

Eu clico em um JButton (B1) e através da interface ActionListener e do método actionPerformed(), eu desejo calcular o número de dias entre as duas data, e depois enviar o resultado para uma terceira JTextField, a T3, então , na T3 a saída mostraria: 22

Estou tentando este código abaixo: (veja parte do código)

import java.text.SimpleDateFormat; 
import java.util.Date;

if (e.getSource) == B1
{
   SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy"); 

   Date d1 = formatador.parse(T1.getText()); 
   Date d2 = formatador.parse(T2.getText()); 

   long dias = (d2.getTime()-d1.getTime())/(1000*60*60*24); 

   T3.setText(String.valueOf(dias)); 
}

Mas dá erro porque tem que tratar exceções, e eu não sei fazer isso. Veja o erro que está dando:

java:61: unreported exception java.text.ParseException; must be caught or declared to be thrown
Date d1 = formatador.parse(T1.getText());

java:62: unreported exception java.text.ParseException; must be caught or declared to be thrown
Date d2 = formatador.parse(T2.getText());

Amigos, se puderem me ajudar ou complementando o que falta, ou me passando um outro código opcional, eu agradeço muito.
Abraço a todos.
Luca

5 Respostas

B

Tratar exceções é simples…

Você pode fazer isso de 2 maneiras.

1º Try Catch:

Com try catch você precisa colocar todo o código que pode gerar o erro entre o bloco try catch. ex:

Date d1 = null;
  try {
     d1 = formatador.parse(T1.getText())
  } catch(Exception ex) {
      //Aqui vc faz oq for necessário para tratar o erro, só estou imprimindo  o caminho da chamada
      ex.printStackTrace();
  }

2º Naum tratar. Quero dizer que você pode passar a execção para que chamar este metódo, isso é o mais correto na maioria dos casos, já que naum há muito o que fazer quando ocorre um erro, e o usuário de seu aplicativo vai precisar saber que ocorreu um erro.

public void calculaDias() throws Exception {}

Ai é só ver sua necessidade…

t+

douglasrauber

Beleza camarada…

Sou novato na jogada, mas essa eu respondo…

Sempre que você tiver um parser… ou seja…

Date d1 = formatador.parse(“26/12/2005”);
Date d2 = formatador.parse(“17/04/2006”);

voce tem que fazer isso em um bloco protegido po try / catch

um exemplo

try{

Date d1 = formatador.parse(26/12/2005); }

catch() {mensagem de erro de conversão de data1}

try{

Date d2 = formatador.parse(17/04/2006); }

cathc() {mensagem de erro de convesão de data2}

Se estiver errado pro favor, os mais experientes…

Valeu amigo!!

Douglas :smiley:

L

Ao douglas e ao btafarelo,

Quero agradecer a colaboração de vocês, eu realmente não sei nada sobre exceções, e vocês passaram conhecimentos que eu aproveitei, melhorei meu entendimento . Mas, infelizmente, não sei fazer o código que faz o que é preciso ser feito para tratar excecões. Eu preciso que alguém faça esse código complementando o meu código acima. Vendo o código pronto talvez eu até entenda, mas realmente não sei fazer.

A questão é só essa, calcular o número de dias entre datas digitadas em duas JTextField, só isso. Mas já estou há vários dias tentando alguém que saiba fazer.

Mas valeu a ajuda amigos, abraço para vocês.
Luca

douglasrauber

Faz assim q dá..

[code]

import java.text.ParseException;
.
.
.
[code]

[code]

SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");
Date d1 = new Date();
Date d2 = new Date();
try{
d1 = formatador.parse(T1.getText()); }
catch(ParseException pe) {}
try{
d2 = formatador.parse(T2.getText()); }
catch(ParseException pe) {}
long dias = (d2.getTime()-d1.getTime())/(1000*60*60*24);

[code]

L

Ao Douglas Rauber

Cara, vim aqui te agradecer, seu código está rodando beleza! Eu já tinha feito várias tentativas com outros códigos, mas sempre dava um problema, agora fechou legal! Valeu, amigo, um grande abraço pra você.

Luca

Criado 10 de junho de 2006
Ultima resposta 11 de jun. de 2006
Respostas 5
Participantes 3