Eu tenho um String no formato (“yyyy-MM-dd HH:mm:ss”), qdo eu converto para data ela me passa para o formato
Tue Apr 15 09:53:21 GMT-03:00 2008. Como eu resolvo isso? Eu quero uma data com esse formato 2008-04-15 09:53:21
To fazendo assim:
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date data = df.parse(DateHelper.parseString("yyyy-MM-dd HH:mm:ss", hist.getDataHoraTransmissao()));
O método parseString converte para String no formato desejado.
Olha só, eu criei o método abaixo pra usar sempre que eu quiser a data do sistema no formato parecido com que você está setando.
public String hoje(){
Date dataAtual = new Date();
SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy kk:mm:ss");
return formatador.format(dataAtual);
}
No caso, você instancia a classe SimpleDateFormat, eu criei o objeto formatador, e no contrutor da classe coloca o formato que quiser… (Dá uma olhada na API para ver como funcionam os formatos). Mas respondendo sua pergunta, pra formatar a data, usa o método ‘format’ da classe SimpleDateFormat. Esse método te retorna uma string aonde o argumento que deve se passar é uma data.
List<HistoricoFindCar> historicoFindCar = new ArrayList<HistoricoFindCar>();
HistoricoFindCar hist = new HistoricoFindCar();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
for (Map veiculo: veiculos) {
/**
* Pega um objeto do tipo Id e salva na lista historicoFindCar.
* O FOR vai iterar os dados na lista.
*/
hist = (HistoricoFindCar) dao.findByNamedQuery("ultimaTransmissao",Long.valueOf(veiculo.
get("OBJECTID").toString())).get(0);
Date data = df.parse(DateHelper.parseString("yyyy-MM-dd HH:mm:ss", hist.getDataHoraTransmissao()));
/**
* O método parseString me retorna uma String, com o formato correto. Só que eu preciso de uma data, então eu uso o método parse da classe SimpleDateFormat, até ae tudo bem, ele passa pra Date mas muda a máscara da data para Tue Apr 15 09:53:21 GMT-03:00 2008. Esse é o problema!
*/
hist.setDataHoraTransmissao(data); // eu preciso que seja do tipo Date, pois depois eu seto novamente na lista com o formato correto.
historicoFindCar.add(hist);
}
} catch (Exception e) {
e.printStackTrace();
}
/**
* retorna a lista com os objetos
*/
return historicoFindCar;
Eu consigo pegar o formato so q com String. Eu tenho q formatar um tipo Date. N sei se estou sendo claro
Não sei se estou entendo bem o que você quer mas a classe Date do pacote util em JAVA funciona mais ou menos assim.
O formato padrão é esse: Tue Apr 15 09:53:21 GMT-03:00 2008, ou seja qualquer objeto que seja do tipo Date, por padrão terá na saída esse formato se não houver nenhuma fomatação. Ele na verdade trabalha com milisegundos e te retorna assim, por isso usamos aquele código que coloquei pra formatar a saida do jeito que quiser.
Se você quer grava no banco como data, usa a classe Date do pacote sql, que independente do formato que ele apresenta na sua saída padrão (imprimindo na tela), ele vai no banco e grava de acordo com o banco.
Vê se isso resolve. Lá na parte de importações usa:
import java.sql.Date;
ao invés de:
import java.util.Date;
Se não for essa sua dúvida, ou se a dica acima não resolver, explica um pouco melhor o seu problema que vou tentar te ajudar porque já apanhei pra caramba com data.
Tá, sem imprimir isso como data, joga pro banco e vê como ficou lá dentro… Qual mesmo o banco que está utilizando???
Como eu te disse, se vc pegar uma data no banco e jogar dentro de uma variável do tipo Date, na hora que vc imprimir, se vc não formatar a saída ele sempre vai jogar da forma padrão, não importa o importa o formato que você setar pra jogar dentro da variável compreende???
Depois que vc joga pra dentro da variável Date, dentro dela, ao invés de ter a data formatada certinho do jeito que vc mandou, a engineer dele transforma aquela data para milisegundos, aí pra vc formatar a saída vc tem que usar o primeiro código que te passei…
Você quer pegar a data no banco, alterá-la e jogar lá dentro denovo???
Faz como falei logo acima, faz essa transação e me diz o que está dentro do banco, porque se vc simplesmente imprimir o que dentro de uma variável date vai sempre ter o mesmo resultado…