Date Format

6 respostas
A

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:

6 Respostas

J

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.

A

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

J

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

J

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…

A

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

J

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…

Criado 15 de abril de 2008
Ultima resposta 15 de abr. de 2008
Respostas 6
Participantes 2