Data aparece no jtable yy/mm/dd

Oi, tenho uma tabela que exibe todas as turmas do meu banco,
mas na coluna data aparece o formato yy/mm/dd, e eu quero que apareça dd/mm/yy
alguem poderia me ajudar ?

public static Date formataData(String data) throws Exception {
        if (data == null || data.equals(""))
             return null;

         Date date = null;
         try {
             DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
             date = (java.util.Date)formatter.parse(data);
         } catch (ParseException e) {
             throw e;
         }
         return date;
     }


aqui estou formatando a data


private void atualizarTabela() {
        TurmaDAO turmaDAO = new TurmaDAO();
        try {
            ArrayList<Turma> turmas = turmaDAO.buscarTodosTurmas();

            String[] colunas = new String[]{"Turma", "Instrutor", "Início", "Conclusão ", "Código"};
            Object[][] dados = new Object[turmas.size()][5];

            for (int i = 0; i < turmas.size(); i++) {
                Turma turma = turmas.get(i);

                dados[i][0] = turma.getNome();
                dados[i][1] = turma.getInstrutor();
                dados[i][2] = turma.getDataInicio();
                dados[i][3] = turma.getDataConclusao();
                dados[i][4] = turma.getCodigo();
            }

            DefaultTableModel dataModel = new DefaultTableModel(dados, colunas);
            TabelaTurma.setModel(dataModel);

        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(this, "Erro " + ex.getMessage());
        }
    }

esta e minha tabela

sua data vem sempre desse jeito?
substring nao te serve?

String date = "09/07/03";
		System.out.println(date);
		System.out.println(date.substring(6, 8).concat("/").concat(date.substring(3, 5)).concat("/").concat(date.substring(0, 2)) );
	
09/07/03
03/07/09

Nesta linha to exibindo a data do banco na tabela


dados[i][2] = turma.getDataInicio();
 dados[i][3] = turma.getDataConclusao();

o que deve mdar ai ?

[quote=Daianne]Nesta linha to exibindo a data do banco na tabela


dados[i][2] = turma.getDataInicio();
dados[i][3] = turma.getDataConclusao();

o que deve mdar ai ?[/quote]

se esses campos forem do tipo data no banco ficaria assim:

String dtInicio = turma.getDataInicio() .substring(6, 8).concat("/").concat( turma.getDataInicio().substring(3, 5)).concat("/").concat( turma.getDataInicio().substring(0, 2));
String dtConclusao =  turma.getDataConclusao() .substring(6, 8).concat("/").concat(turma.getDataConclusao().substring(3, 5)).concat("/").concat( turma.getDataConclusao().substring(0, 2));
dados[i][2] =dtInicio  ;
dados[i][3] = dtConclusao;

como vc esta usando algum framework tipo hibernate ou usando jdbc (ResultSet, Statement)?

JDBC

mas o campo dtinico e conclusao estão como date ou varchar?

Date

entao usa assim

public static String convertDate(String format, Date dtConsulta) {
		try {
			SimpleDateFormat formatter = new SimpleDateFormat(format,
					new Locale("pt", "BR"));
			return formatter.format(dtConsulta);
		} catch (Exception e) {
			return null;
		}
	}
dados[i][2] = convertDate("dd/MM/yy", turma.getDataInicio());
dados[i][3] = convertDate("dd/MM/yy", turma.getDataConclusao());

Mas o metodo para convertre fica na classe turma, ou na classe q esta a minha tabela, ou não importa a classe?

sugiro vc criar uma classe para colocar esse metodo.

ex. DateUtil.java e usar como eu coloquei
ou pode colocar na classe turma mesmo, so q ai vc tem q criar outro metodo pra recuperar.

ex.[code]

public String getDataInicioFormatada(){
return convertDate(“dd/MM/yy”, getDataInicio());
}

public String getDataConclusaoFormatada(){
return convertDate(“dd/MM/yy”, getDataConclusao());
}

[/code]

o mais correto seria a 1a sugestao, pq vc pode usar o metodo em outras classes se for o caso;

Segui a primeira sugestão mas da erro na tabela, (Tipos inconpativeis)

cannot find simbol
simbol: method ConvertData (java.leng String, java.Util.Date)

found: ConvertData
required: java.lang object

coloca o codigo onde vc recupera no turmaDAO.buscarTodosTurmas();

se vc recupera ± assim tinha q dar certo

while (rs.next()) { rs.getDate("DataInicio"); }

olha o codigo e vê se ta certo

to criando uma turma


 private Turma criarTurmaAPartirDoResultSet(ResultSet rsTurma) throws SQLException {

        Turma turma = new Turma();
        turma.setNome(rsTurma.getString("nome"));
        turma.setCodigo(rsTurma.getInt("codigo"));
       // turma.getInstrutor(rsTurma.getInt("instrutor"));
        turma.setDataInicio(rsTurma.getDate("datainicio"));
        turma.setVagas(rsTurma.getString("vaga"));
        turma.setDataConclusao(rsTurma.getDate("dataconclusao"));
      

        return turma;
    }


este e o metodo BuscarTodas as turmas

 public ArrayList<Turma> buscarTodosTurmas() throws SQLException {
        Statement smt = conexao.pegarConexao().createStatement();
        String sql = "SELECT * FROM turma";
        ResultSet rsTurma = smt.executeQuery(sql);

        ArrayList<Turma>turmas=new ArrayList<Turma>();
        while(rsTurma.next()){
            Turma turma =criarTurmaAPartirDoResultSet(rsTurma);
            turmas.add(turma);

        }
        
   return turmas;
     }

qual pacote vc importou para o Date dtConsulta no metodo public static String convertDate(String format, Date dtConsulta)?
tem que ser java.util.Date e não java.sql.Date;

mas estou usando o java.util.Date

do turma tb?

tambem

vc criou uma classe especifica pro metodo convertdate ou colocou na classe turma?
posta como fcou