Data ao contrario

11 respostas
Luciano_Lopes

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

11 Respostas

danielfigueiredoc

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

Luciano_Lopes

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?

danielfigueiredoc

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!

Luciano_Lopes

Usei teu código mas não deu certo :frowning:

danielfigueiredoc

Deu erro ou continuou exibindo com o pattern errado?

Ps: coloca o trecho do código.

Luciano_Lopes

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

thimor
Luciano_Lopes:
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

vc ta usando rs.getString. tem que usar rs.getDate. o data.format so recebe tipo Date como parametro;
private String formatarData(Date data) {
        SimpleDateFormat formatar = new SimpleDateFormat("dd/MM/yyyy");
        return formatar.format(data);
    }
para utilizar o metodo voce vai fazer assim:
String dataFormatada = formatarData(ConCliente.Rs.getDate("Cli_DataCadastro"));
agora obviamente seu ResultSet precisa estar retornando alguma coisa.
Ultralogic

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

Luciano_Lopes

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?

Luciano_Lopes

up

neeryck

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

Criado 15 de outubro de 2009
Ultima resposta 18 de out. de 2009
Respostas 11
Participantes 5