Converter data para formato dd/mm/aaaa

Olá pessoal

Estou com dificuldades para mostrar a data no form.

Quanto a inclusão do registro beleza, no campo do form a data é recebida através da máscara formatoData ex: (01/04/2008) e grava no banco
no formato 2008-04-01.

A questão é para visualisar esta data:
No campo do formulário não mostra a data;
No jtable visualiza no mesmo formato que está no arquivo.

MOSTRA OS DADOS NO FORM

public void mostrar_dados()
{
try
{
tf_codate.setText(con_ausatend.resultset.getString(“aus_codate”));
tf_data.setText(con_ausatend.resultset.getString(“aus_data”));
atualizaComboBoxatendente();
}
catch(SQLException erro)

Quem puder me ajudar, desde já agradeço.

Antes de tudo, data vc le do resultset com getDate e nao getString.

Agora segue um codigo que pode te ajudar:

		DateFormat df1 = new SimpleDateFormat("dd/MM/yyyy");
		DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");
		String sdata = "2008-04-01";
		Date data = df2.parse(sdata);
		System.out.println(df1.format(data));

Legal pela ajuda… Devo ter mais algum código incorreto ou faltando alguma coisa.

Informei os códigos conforme você mencionou, porém apresenta o seguinte erro na linha que contem o df2.parse:
Não pode encontrar o símbolo: method parse(java.sql.Date) location: class java.text.DateFormat
Não sei porque do erro se a classe java.text.DateFormat está sendo importada.
Poderia dar uma olhada para ver o que está faltando.

        DateFormat df1 = new SimpleDateFormat("dd/MM/yyyy");
        DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");
        Date data2 = df2.parse(con_ausatend.resultset.getDate("aus_data"));
        JOptionPane.showMessageDialog(null,"Data = "+ data2);

No início do programa tem estes import:

package cadastros;
import java.io.IOException;
import java.text.SimpleDateFormat;
import relatorios.;
import java.io.File;
import java.sql.SQLException;
import javax.swing.
;
import javax.swing.table.DefaultTableModel;
import utilitarios.conexao;
import utilitarios.data.*;
import javax.swing.text.MaskFormatter;
import java.util.Date;
import java.text.DateFormat;
public class cad_ausAtend extends javax.swing.JFrame {

O parse vc faz de uma string para obter a data que aquela string representa.
Se vc pega do ResultSet com getDate, entao vc naum precisa fazer parse para um Date porque o que vc tem ja eh um Date.
Ai para mostrar esse Date no formato certo, ai sim, vc vai formatar (usando o metodo format) para o formato que vc deseja exibir.

Da uma estudada nos metodos de SimpleDateFormat

http://java.sun.com/j2se/1.5.0/docs/api/java/text/SimpleDateFormat.html

Ah e pelo que eu sei, as vezes pode ocorrer erro na conversado de java.sql.Date para java.util.Date, o ideal eh vc trabalhar com java.util.Date, mas o getDate do ResultSet retorna java.sql.Date, entao faz assim:

java.sql.Date sqlDate = resultSet.getDate(xx);
java.util.Date data = sqlDate != null ? new java.util.Date(sqlDate.getTime) : null;
System.out.println(new SimpleDateFormat("dd/MM/yyyy").format(data));

ps: nao testei esse codigo hehe mas deve ser mais ou menos isso.

java.sql.Date não precisa ser convertido em java.util.Date porque um é subclasse do outro.

java.sql.Date sqlDate = resultSet.getDate(xx); System.out.println(new SimpleDateFormat("dd/MM/yyyy").format(sqlDate));

Entao, foi isso que eu disse ainda semana passada aqui, ai 3 programadores do projeto falaram algo como java.sql.Date nao se da muito bem com java.util.Date e blablabla, disseram que era alguma coisa a ver com algumas implementacoes dos drivers, como meu tempo e paciencia para testar isso era 0, resolvi fazer uma consulta no google, vi umas conversoes assim, entao, para nao precisar provar o contrario para eles, eu aceitei hehe pensei: vai que seja uma excecao e ocorrer alguma diferenca de acordo com os drives :wink: eh, no google agente encontra o que quer achar neh hehe se quiser achar que 1 != 1 agente acha :stuck_out_tongue:

Hoje olhando melhor, nao achei nada que pudesse comprovar esse problema

O que existe é que pra gravar em um PreparedStatement, você precisa de um java.sql.Date, e geralmente se tem um java.util.Date, e nesse caso é necessario fazer essa conversão dessa forma aí… mas o contrario não, até porque um cast assim já funcionaria:

java.util.Date data = (java.util.Date) sqlDate;

[code]
java.sql.Date sqlDate = resultSet.getDate(xx);
java.util.Date data = sqlDate != null ? new java.util.Date(sqlDate.getTime) : null;
System.out.println(new SimpleDateFormat(“dd/MM/yyyy”).format(data));
[\code]

dessa forma funciona mas as vezes não faz a conversao correta. o melhor mesmo e usa o simpleDateFormat

Olha se este método ajuda …

private String formatDate(String data){
  DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
  return(df.format(data));
}

Espero ter ajudado…

Estou progredindo, na verdade meio devagar, mas estou.

Consegui pegar a data do banco no formato aaaa/mm/dd e visualizar no formato dd/mm/aaaa,
isso ao visualizar a linha do primeiro registro beleza.

Porém ao duplo clique na linha do jtable, no primeiro método mostra a data e no segundo não,
consta a data como null.

Se o amigo puder me ajudar, agradeço.

private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {
int linha = 0;
if (evt.getClickCount() ==2) {
linha = jTable1.getSelectedRow();
codate = (String) jTable1.getValueAt(linha, 0);
java.sql.Date data = (java.sql.Date) jTable1.getValueAt(linha, 2);
JOptionPane.showMessageDialog(null,“data =”+ data);
// AQUI MOSTRA A DATA
jtable_form();
}
}

public void jtable_form()

{
try
{

        JOptionPane.showMessageDialog(null,"data ="+data);

// AQUI A DATA É NULL // porque será
// POR ESSE MOTIVO NÃO CONSIGO EFETUAR O SELECT o codate TEM CONTEÚDO, MAS A data É null

        String sql = "select * from ausatend where aus_codate = "+codate + " and aus_data = "+data;
        con_ausatend.executeSQL(sql);
        con_ausatend.resultset.first();
        mostrar_dados(); //irá chamar a função em que irá mstrar os dados no form
        
    }

catch (SQLException erro)

Ae juraci, to pegando o bonde andando ae, mas acho q seu erro está aqui oh

java.sql.Date data = (java.sql.Date) jTable1.getValueAt(linha, 2); 

Vc esta criando um novo atributo data atributo do método, não da classe, e provavelmente vc deve ter um atributo com mesmo nome, mas sendo atributo de classe, o problema é que vc coloca o valor no atributo do método e não da classe, quando vai utilizar o atributo da classe ele ainda está null.