De JtextFieldFormated String para Campo Data

9 respostas
G

estou passa aqui o meu codigo de gravação;;

private void Botao_Gravar1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:

String ini01str = "'"+Variav_Inici.getText()+"'";  // Campo Data
    String sen03 = "'"+Variav_Senha.getText()+"'";  // campo password
    String nom06 = "'"+Variav_Nomfu.getText()+"'";  
      
     
    //String data = new SimpleDateFormat("dd/MM/yyyy").parse("03/11/2008");        
    //Date ini01 = null;
    //sdf.setLenient(false);
    //try {
    //    ini01 = sdf.parse(ini01str);
    //    JOptionPane.showMessageDialog(null,ini01);
    //} catch (ParseException ex) {
    //    ex.printStackTrace();
    //}
    //SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");  
    //sdf.format(ini01);        

     isso tudo ai em cima ja testei e nao deu certo da erro 

     pede para inserir try eu faço isso a data fica nula ou trava

     uma instrução que me possa ajudar nessa convenção;

     Lembrando que sou iniciante em java;  Vindo do Clipper;

9 Respostas

ViniGodoy

Oi. Você pode editar seu tópico aí em cima seguindo essas dicas?
http://www.guj.com.br/posts/list/50115.java

Senão fica difícil ler seu código fonte…

Então, faltou você dizer o que você quer fazer.

G

Bem gostaria que me explicassem como faço para converter string para variavel data para ser trabalhada

e converter string para data sql para grava na base mysql

ViniGodoy

Você só precisa converter string para Data. O PreparedStatement trabalha com o tipo java.util.Date, não com o tipo java.sql.Date.

A solução é essa:

Date data = null;
try {
    data = new SimpleDateFormat("dd/MM/yyyy").parse(seuTextField.getText());
} catch (Exception e) {
   JOptionPane.showMessageDialog(this, "Data inválida!");
   return;
}

Acho que o seu erro era o fato de vc ter criado a variável data como String.

G

Vini bom dia

e obrigado por vc me ajudar

Date data = null;   
    try {   
        data = new SimpleDateFormat("dd/MM/yyyy").parse(Variav_Inici.getText());   
       JOptionPane.showMessageDialog(this, "Data inválida!");   
     } catch (Exception e) {   
       JOptionPane.showMessageDialog(this, "Data inválida!");   
       return;   
    }

Sendo que Variav_Inici esta formartada com a mascara ##/##/#### e a data informada foi 22/10/2009

qdo executo aparece a mensagem data invalida…

porque será data invalida

G

mudei para o lost focus e apareceu assim o resultado

Thu Oct 22 00:00:00 BRST 2009

GOSTARIA QUE APARECESSE ASSIM 22/10/2009 OU DATA MESMOS

OBRIGADO PELA COOMPREESÃO

ViniGodoy

Você inseriu uma linha a mais no “try”, com a mensagem de DataInválida. Isso mostrará a mensagem mesmo que a conversão seja bem sucedida. Deixe o erro só no catch.

Para recolocar converter o tipo Date num String novamente, use a classe SimpleDateFormat, mas com o método format.

String dataStr = new SimpleDateFormat("dd/MM/yyyy").format(data);

É uma boa você criar em algum lugar a constante com o formato da data, afinal de contas, vc usará ela em todo lugar.

public class Constantes { public static final SimpleDateFormat("dd/MM/yyyy") FORMATO_DATA }

E na sua classe:

Para ler do JTextField e converter para data:

Date data = null; try { data = Constantes.FORMATO_DATA.parse(txtData.getText()); } catch (Exception e) { JOptionPane.showMessageDialog(this, "Data inválida!"); }

Para ler converter a data novamente em String:

txtData.setText(Constantes.FORMATO_DATA.format(data));

Dá uma lida no tópico que postei para você ali em cima. Não poste códigos no GUJ sem a tag code. Senão fica sem cor e sem formatação e dificulta muito para quem entra no tópico para te ajudar. :wink:

ambuzr

pq vc nao usa o JCalendar?

Permite mascara, validar se o usuario digitou uma data valida, especifica um periodo de datas q pode ser selecionado entre milhares de ourtas coisas, adoro essa Lib

G

AMBUZR COMO FAÇO PARA BAIXA ELA

OU JA VEM NO PACOTE JAVA

TEM CONDIÇÃO PAR AME PASSAR UM EXEMPLO…

VINNI VOU TESTA AQUI OS SEUS EXEMPLOS OBRIGADO…

JA GRITO DE NOVO

EDIMIL

Pessal estou reabrindo este tópico, porque não consigo achar uma solução para o meu problema com data, por favor me ajudem

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFormattedTextField;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import utilitarios.conexao;

/**
 *
 * @author Edson
 */
public class ConsultarVenda extends javax.swing.JFrame {

    DefaultTableModel modelo;
    DefaultTableModel modelo2;
    conexao cone = new conexao();
    Date dataIni = null;
    Date dataFim = null;
    String sql = "select venda_cod,venda_data,venda_vl_total,venda_desc,venda_tt_geral,venda_qtd,cli_nome"
            + " from venda,cliente where venda.cli_cod = cliente.cli_cod and venda_data between '" + dataIni + "'and'" + dataFim + "' ";

    /** Creates new form ConsultarVenda */
    public ConsultarVenda() {
        initComponents();
        cone.conectar();
        HandlerText ht = new HandlerText();
        //jTextField1.addActionListener(ht);
        //jTextField2.addActionListener(ht);
        jFormattedTextField1.addActionListener(ht);
        jFormattedTextField2.addActionListener(ht);
    }

    private class HandlerText implements ActionListener { // Classe para utilizar tecla Enter/ JTextField

        public void actionPerformed(ActionEvent e) {
            /*if (e.getSource() == jTextField1) {
            jTextField2.requestFocus();
            }
            if (e.getSource() == jTextField2) {
            dataIni = DatejTextField1.getText();
            preencheTabVenda();
            }*/
            if (e.getSource() == jFormattedTextField1) {
                jFormattedTextField2.requestFocus();
            }
            if (e.getSource() == jFormattedTextField2) {
                DateFormat formato = new SimpleDateFormat("yyyy-MM-dd");
                try {
                    dataIni = formato.parse(jFormattedTextField1.getText());
                    dataFim = formato.parse(jFormattedTextField2.getText());
                } catch (ParseException ex) {
                    Logger.getLogger(ConsultarVenda.class.getName()).log(Level.SEVERE, null, ex);
                }                
                preencheTabVenda();
            }
        }
    }
[code]

quando executo o programa,  a seguinte mensagem de erro:

[code]
03/04/2010 05:30:41 view.ConsultarVenda$HandlerText actionPerformed
SEVERE: null
java.text.ParseException: Unparseable date: "30/03/2010"
nesta linha:
dataIni = formato.parse(jFormattedTextField1.getText());

alguém pode ajudar, meus cabelos estão caindo...

Criado 22 de outubro de 2009
Ultima resposta 3 de abr. de 2010
Respostas 9
Participantes 4