Esse realmente ta sendo um grande desafio para mim

4 respostas
admlaugusto

Olá!

Tenho uma jtable que lista (Apenas as informacoes que eu preciso, da tabema OrdemdeServicoInicial)


|ordem de servico l Local do servico | situacao |

| LIMPEZA | REGIAO 1 | |
| CONSTRUCAO | REGIAO 2 | |
| CONSTRUCAO | REGIAO 5 | |

Estou tentando fazer um operacao com os dados, para que observando o dia do vencimento (que tem na base), ele retorne e coloque na jtable a informacao se esta vencida ou não.
Tou quase conseguindo… acho que falta pouco.

Aqui esta o codigo que eu ja fiz…
Sugestões são muito bem vindas!

try
        {
        java.text.SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yy hh:mm");

            while (con_iniOsm.resultset.next()){
            String pegadata = con_iniOsm.resultset.getString("dt_venc");
            String pegahora = con_iniOsm.resultset.getString("hr_venc"); 
            Date dataHora = sdf.parse(pegadata + " " + pegahora); 
//            Date dataHora = sdf.parse(pegadata + " " + pegahora); 
            Date data1 = dataHora;
            Date data2 = sdf.parse("18/04/2008 12:30:00"); //Aqui depois vou pedir pra pegar a data atual         
            double diasDiferenca = ((double) (data2.getTime() - data1.getTime())) / (24 * 60 * 60 * 1000);
            String situacao="";
            if (diasDiferenca<0){
            situacao = "Vencida";
            }
                else if (diasDiferenca>=0 && diasDiferenca<=0.083334){
                situacao = "Crítica";        
                }
                    else if (diasDiferenca>=0.083334 && diasDiferenca<=1){
                    situacao = "Vencendo";        
                    }
                        else
                        {
                        situacao = "não vencido";
                        } 
               
            modelo.addRow(new Object [] {con_iniOsm.resultset.getString("num_osm"),con_iniOsm.resultset.getString("endereco"),con_iniOsm.resultset.getString("servico_sol"),con_iniOsm.resultset.getString("hr_venc"),situacao});
            con_iniOsm.resultset.first();
            }
       }
    
             catch (SQLException erro){
      JOptionPane.showMessageDialog(null,"Erro ao listar no JTable "+erro);
     }

erro apresentado:
Date dataHora = sdf.parse(pegadata + " " + pegahora);
C:\estoque\src\Cadastros\formulario1.java:630: unreported exception java.text.ParseException; must be caught or declared to be thrown
Date data2 = sdf.parse(“18/04/2008 12:30:00”); //Aqui depois vou pedir pra pegar a data atual
Note: C:\estoque\src\Cadastros\formulario1.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
2 errors

Obrigado

4 Respostas

victorwss

O método parse pode lançar a exceção ParseException.

Por exemplo:

sdf.parse("xXxX Isso eh um texto q naum se parece nem 1 poko c/ uma data!!!!!");

Quando o SimpleDateFormat tentar converter aquele lixo, o que acontece? Ele lança essa exceção.
O compilador, sabendo que o método pode lançar esta exceção, pede para que você a trate adequadamente, coisa que o seu código não está fazendo.

Portanto você terá que colocar um try-catch em algum lugar aí para pegar a ParseException.

admlaugusto

Victorws!

Ok. obrigado pela contribuição…
Mas, sendo ainda mais prático

como a data já esta em formato Date no banco então não precisarei usar o Parse, ok?

Então como ficaria meu código, (que vc ver na primeira mensagem) utilizando essa nova informação?

victorwss

admlaugusto:
Victorws!

Ok. obrigado pela contribuição…
Mas, sendo ainda mais prático

como a data já esta em formato Date no banco então não precisarei usar o Parse, ok?

Então como ficaria meu código, (que vc ver na primeira mensagem) utilizando essa nova informação?

O parse serve para tentar converter String em Date. Se ele já vier um Date pronto, então você não precisará do parse. Quem pode lançar ParseException é o método parse, portanto se você eliminar o parse do seu código também elimina a ParseException.

admlaugusto

Pois… meu problema é este…
Ja li tudo que podia, e tentei entender de todas as formas.

na verdade, busco uma data (dia/mes/ano) em uma coluna, uma hora em outra coluna (hora:minuto),

jogo isso tudo (concatenado) dd/mes/ano hora:minuto
faço uma conta para saber (hoje - dd/mes/ano hora:minuto) tenho o resultado em dias

faco uma condicao, e quero jogar de volta a resposta desta condicao na jtable,

a dificuldade tá para pegar esta data e fazer a operacao.
continuo com dúvida.
Se puder utilize o meu codigo, como exemplo para me ajudar. Pois, meu nivel ainda é básico… kkk

Abraço

Criado 18 de abril de 2008
Ultima resposta 18 de abr. de 2008
Respostas 4
Participantes 2