Data aparece no jtable yy/mm/dd

33 respostas
Daianne

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

33 Respostas

xandevieira

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
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 ?

xandevieira

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 ?

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;
xandevieira

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

Daianne

JDBC

xandevieira

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

Daianne

Date

xandevieira

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());
Daianne

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

xandevieira

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.
public String getDataInicioFormatada(){
return convertDate("dd/MM/yy", getDataInicio());
}

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

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

Daianne

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

Daianne

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

found: ConvertData
required: java.lang object

xandevieira

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

se vc recupera ± assim tinha q dar certo

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

Daianne

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;
     }
xandevieira

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;

Daianne

mas estou usando o java.util.Date

xandevieira

do turma tb?

Daianne

tambem

xandevieira

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

Daianne

criei uma classe mas continua dando erro

xandevieira

posta ai

Daianne

mudei algumas coisa, excli aquela classe, e coloquei o metodo para converter na classe turma e deu certo, mas não aparece o mes

Daianne

desculpa pela ortografia
é excluí a classe

xandevieira

posta o codigo como ficou na classe turma

Daianne
dados[i][2] = turma.convertDate("dd/mm/yy",turma.getDataInicio() );
                dados[i][3] = turma.convertDate("dd/mm/yy", turma.getDataConclusao());
Daianne

minha classe turma ficou 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;
        }
    }


     public String getDataInicioFormatada(){
     return convertDate("dd/mm/yy", getDataInicio());
    }

     public String getDataConclusaoFormatada(){
     return convertDate("dd/mm/yy", getDataConclusao());
    }
xandevieira

eh mm (minusculo) refere-se a minuto, coloque maiusculo MM

xandevieira
Daianne:
minha classe turma ficou 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;
        }
    }


     public String getDataInicioFormatada(){
     return convertDate("dd/mm/yy", getDataInicio());
    }

     public String getDataConclusaoFormatada(){
     return convertDate("dd/mm/yy", getDataConclusao());
    }

ja q vc criou os medos ..formatada

recupere a formatada aqui

dados[i][2] = turma.convertDate("dd/mm/yy",turma.getDataInicio() );
                dados[i][3] = turma.convertDate("dd/mm/yy", turma.getDataConclusao());
Daianne

Deu certo obrigada

xandevieira

não por isso, qq coisa estamos ai.

Daianne

outr perguntinha, e se eu quiser colocar a hora em outra coluna como seria

xandevieira

so trocar o format de “dd/MM/yyyy” para “HH:mm:ss”

Daianne

Obrigada

Criado 2 de julho de 2009
Ultima resposta 3 de jul. de 2009
Respostas 33
Participantes 2