Pessoal,estou usando o firebird,nele ja contem alguns registros,a data esta normal(dd/mm/yyyy),só que quando exibo no jtable,o java me traz no formato contrario (yyyy/mm/dd),alguem pode me ensinar uma maneira de resolver este problema,e se possivel explicar o ´porque do problema?Desde ja agradeço a ajuda.vlw
Data ao contrario
11 Respostas
Tem como colocar o código que você faz pra trata-la até o text? Provavelmente você vai ter que setar a pattern pela java pro formato que você quer, antes de exibi-lá na te-la.
Você pode fazer isso usando o SimpleDateFormat http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html , só pasar a pattern como string.
Tem exemplo no site!
Abraço!!
Não estou usando nenhum código não,estou apenas pegando a data e exibindo tanto no jTextField como jTable,ai quando ela é exibida vem no formato contrario,você pode postar um exemplo de como tratar isso?
Então, na hora que você jogar ela dentro de um campo do tipo Date. Porque ela vem do banco, através de um resultSet ou algo do tipo, dai você a atribui para uma variável Date ou Calendar que será exibida na tela correto?
Quando você atribui é que ela perde o formato, você poderia fazer algo do tipo:
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
String dataFormatada = sdf.format(suaDataDoBanco); //suaDataDoBanco sendo do tipo java.util.Date;
Dai ela já ficará no formato da pattern setada na instancia do SimpleDateFormat.
Abraço!
Usei teu código mas não deu certo 
Deu erro ou continuou exibindo com o pattern errado?
Ps: coloca o trecho do código.
Por enquanto eu fiz isso para testar:
ConCliente.ExecutarQuery("select * from clientes where cli_id=1");
ConCliente.Rs.first();
DataFormatada=Data.format(ConCliente.Rs.getString("Cli_DataCadastro"));
JOptionPane.showMessageDialog(null,DataFormatada);
Mas mesmo assim não aparece nadas
Por enquanto eu fiz isso para testar:vc ta usando rs.getString. tem que usar rs.getDate. o data.format so recebe tipo Date como parametro;ConCliente.ExecutarQuery("select * from clientes where cli_id=1"); ConCliente.Rs.first(); DataFormatada=Data.format(ConCliente.Rs.getString("Cli_DataCadastro")); JOptionPane.showMessageDialog(null,DataFormatada);Mas mesmo assim não aparece nadas
private String formatarData(Date data) {
SimpleDateFormat formatar = new SimpleDateFormat("dd/MM/yyyy");
return formatar.format(data);
}
String dataFormatada = formatarData(ConCliente.Rs.getDate("Cli_DataCadastro"));
você pode também fazer uma substr com a var armazenar a data
aew você vai pegando as posições exatas e joga-as da forma certa dentro de uma outra var que vai exibir a data da forma correta
Flww
thimor,funcionou blz depois que coloquei o getDate,vacilei feio :oops: , mas porque tenho que usar dd/MM/yyyy ao invés de dd/mm/yyyy?Outra dúvida,como faço para todas as datas ficarem formatadas quanto eu listar os dados no jTable?
up
Olha que legal…
LocalDate data = new LocalDate(2009,10,18);//Veja quais outros parâmetros o construtor pode receber tb
data.toString(); //RETORNA NO FORMATO DO BANCO
data.toString("dd/MM/yyyy");// NO OSSO FORMATO =D
Procure por JodaTime… vai se convencer em deixar de usar as API’s citadas acima =D
[]'s