Problema com Data

10 respostas
juliana_cora

Bom Dia a todos

Preciso recuperar o vencimento data inicial e final no banco, só que está dando erro quando digito a data no campo.

private void jBRelatorioActionPerformed(java.awt.event.ActionEvent evt) {                                            
        if(evt.getSource()==jBRelatorio)
        {
            try 
            {
                //String tipoConsulta = (String) jComboConsulta.getSelectedItem();
                String codPessoaInf = TNumPessoa.getText();
                String dataInicialInf  = TInicial.getText();
                String dataFinalInf    = TFinal.getText();
                
                int codPessoa = Integer.parseInt(codPessoaInf);
                 
                contas.setNroPessoa(codPessoa);
                contas.setDataInicio(formataData("01012009"));
                contas.setDataFinal(formataData("01012012"));
                
                TabelaContas tabelaContas = new TabelaContas(contas);
                tabelaContas.setVisible(true);
            } 
            catch (SQLException ex) 
            {
                System.out.println("Erro 5:"+ex.getMessage());
            }           
        }
}

Dá esse erro!!!

Erro 6Unparseable date: "01012009" Erro 6Unparseable date: "01012012"

Quem puder me ajudar obrigada!!!

10 Respostas

juliana_cora

Opá....esqueci de postar o método formataData

public static Date formataData(String data) 
    {   
        Date dateF = null;
        
        if (data == null || data.equals(""))
        {
            return null;
        }
        try 
        {   
            DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");  
            dateF = (java.util.Date)formatter.parse(data);   
        } 
        catch (ParseException erro) 
        {               
            System.out.println("Erro 6"+erro.getLocalizedMessage());
        }   
        return dateF;
    }
HarryPodre

Olá Juliana!
Verifique o pattern da data que você passou no construtor SimpleDateFormat():

DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");

Compare com o formato da data que você está passando.

juliana_cora

O botão relatório chama essa classe..

private void geraTabela(Contas contas)
    {
        try
        {
            Vector<String> cabecalho = new Vector<String>();
            Vector<Vector> linhas    = new Vector<Vector>();
           
            //ConexaoGenerica.setResultSet("select * from contas where nro_pessoa = "+contas.getNroPessoa());
            ConexaoGenerica.setResultSet("select * from contas where vencimento between to_date(to_char("+contas.getDataInicio()+",'dd/mm/rrrr'),'dd/mm/rrrr')  and to_date(to_char("+contas.getDataFinal()+",'dd/mm/rrrr'),'dd/mm/rrrr') order by nro_pessoa");
            
            ConexaoGenerica.resultSet.next();
            
            ResultSetMetaData rsmd = ConexaoGenerica.resultSet.getMetaData();
            for(int i = 1; i <= rsmd.getColumnCount(); ++i)
                cabecalho.addElement(rsmd.getColumnName(i));
            do
            {
                Vector<Object> linhaAtual = new Vector<Object>();
                for(int i = 1; i <= rsmd.getColumnCount(); i++)
                {
                    switch(rsmd.getColumnType(i))
                    {
                        case Types.VARCHAR:
                            linhaAtual.addElement(ConexaoGenerica.resultSet.getString(i)); break;
                            
                        case Types.NUMERIC:
                            linhaAtual.addElement(ConexaoGenerica.resultSet.getInt(i)); break;                   
                    }
                }
                linhas.addElement(linhaAtual);    
            }
            while(ConexaoGenerica.resultSet.next());
            table = new JTable(linhas, cabecalho);
            JScrollPane scroller = new JScrollPane(table);
            getContentPane().add(scroller, BorderLayout.CENTER);
            ConexaoGenerica.close();            
        }
        catch(SQLException erro){}
    }
V

Oi,

Altere a mascara para:

DateFormat formatter = new SimpleDateFormat("ddMMyyyy");
juliana_cora

Fiz o que me disse, mais continua dando erro…

V

Nao deveria ocorrer este erro, testei este codigo e funcionou

DateFormat formatter = new SimpleDateFormat("ddMMyyyy");
try {
   System.out.println(formatter.parse("01012012"));
} catch (ParseException ex) {
   ex.printStackTrace();
}
xjunior

vdb:
Nao deveria ocorrer este erro, testei este codigo e funcionou

DateFormat formatter = new SimpleDateFormat("ddMMyyyy"); try { System.out.println(formatter.parse("01012012")); } catch (ParseException ex) { ex.printStackTrace(); }

O código do nosso amigo está correto…
tmbém fiz um e testei:

Date dateF;
          String data = null;
          data = "15122009";
          DateFormat formatter = new SimpleDateFormat("ddMMyyyy");
          dateF = (java.util.Date)formatter.parse(data);
          JOptionPane.showMessageDialog(null, dateF);
xjunior

Substitui seu formatadata por este e vê se resolve seu problema:

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JOptionPane;

/**
 *
 * @author xjunior
 */
public class FormataData {
    private Date dateF=null;
    private String data;

    FormataData(String data) {
        this.data=data;
    }
    public  Date FormataData()
    {
        try{            
            DateFormat formatter = new SimpleDateFormat("ddMMyyyy");
            this.dateF = (java.util.Date)formatter.parse(this.data);
            return this.dateF;
        }
        catch (ParseException erro)
        {
            JOptionPane.showMessageDialog(null,"Erro 6"+erro.getLocalizedMessage());
            return null;
        }        
    }
}

e inicializa o formatadata desta forma:

FormataData F = new FormataData(data);
          JOptionPane.showMessageDialog(null, F.FormataData());
xjunior

Vejo que vc é nova em java, não é?
aqui, acessa este tópico e lá tem um exemplo completo que postei para resolver um problema, usando PreparedStatament e JDBC, vale a pena dar uma olhada, ok?
http://www.guj.com.br/posts/list/148642.java#804938

juliana_cora

Olá Junior…

Desculpe por demorar pra responder, eu consegui resolver só que tive que fazer uma gambiarra…e sou nova em JAVA sim e valeu pela dica okk…

Abraços…

Criado 18 de janeiro de 2010
Ultima resposta 20 de jan. de 2010
Respostas 10
Participantes 4