Date Format

Pessoal boa tarde,

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.

como eu resolvo isso?

Vlw!

:cry:

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.

Blz! Mas vai me retornar um String, n é mesmo?

Esse é problema.

vou colocar todo o trecho do código:

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.

Que banco está usando???

Olha só, achei um código aqui que retorna uma data, vê se te ajuda…

public Date dataCompleta(String dataString) throws ParseException{ try{ SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy kk:mm:ss"); return formatador.parse(dataString); }catch(ParseException pe){ throw pe; } }

Ah, aqui estou usando o Date da util mesmo…

blz, Eu fiz dessa forma:

 public static Date dataFull(String value) throws ParseException {     
	   SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        
	   return formatter.parse(value);       
	   } 

Chemei o método dataFull e passei a string

Date data = DateHelper.dataFull(hist.getDataHoraTransmissao().toString());

Ainda ta me retornando no formato padrão Tue Apr 15 09:53:21 GMT-03:00 2008, não ta pegando a formatação

vlwss!

O negócio complicadin!
hehehe

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…