[RESOLVIDO] Erro ao converter string para data

Pessoal,

Estou com um problema na conversão de string para data que não consigo resolver.
O código é o seguinte:

public void setDado(String dado) { try { this.dado = new SimpleDateFormat("dd/MM/yyyy") .format(new SimpleDateFormat("EEE MMM d HH:mm:ss zzz yyyy").parse(dado));
A string dado possui o valor ‘Wed Jun 01 00:00:00 BRT 2011’.
Já tentei utilizar new SimpleDateFormat(“EEE MMM d HH:mm:ss zzz yyyy”), new SimpleDateFormat(“EEE MMM dd HH:mm:ss zzz yyyy”), new SimpleDateFormat(“EEE MMM d HH:mm:ss z yyyy”) e new SimpleDateFormat(“EEE MMM d HH:mm:ss z yyyy”).

Alguém tem ideia do que está errado?

Obrigada.

Porque você executa dois formats?
Passa um formato no construtor e depois no format?

Tente passar apenas no construtor e executar o parse e veja o que acontece.
Abraços.

É pq eu tenho uma string no formato ‘Wed Jun 01 00:00:00 BRT 2011’ e quero no final uma string no formato ‘01/06/2011’.
Então estava tentando criar uma data com o formato “EEE MMM d HH:mm:ss zzz yyyy” e depois, a partir desta data, criar uma outra string no formato ‘dd/MM/yyyy’.
Por isso o format e depois o parse… tem como fazer isso de uma vez só sem ser varrendo e quebrando a string?

Entendo.

Infelizmente, não sei lhe responder.
http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

Podes pesquisar aqui algo.
Entretanto, vejo que essa sua String vem de um date, perfeito?
Não consegue fazer com que ela já chegue formatada? Como “dd/MM/yyyy” por exemplo.

Abraços.

[code]import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Main {

public static void setDado(String dado) {

	try {
		dado = new SimpleDateFormat("dd/MM/yyyy")
				.format(new SimpleDateFormat("EEE MMM d HH:mm:ss zzz yyyy")
						.parse(dado));
	} catch (ParseException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	System.out.println(dado);
}

public static void main(String[] args) {
	System.out.println(new Date().toString());
	setDado(new Date().toString());
}

}[/code]

esse método está funcionando faça o teste aí!!

Por incrível que pareça não funciona.
Já recompilei, já limpei tmp do jboss… e nada.
Enfim… continuarei na luta! Valeu pela ajuda, povo!

.paula

o que vc quer é converter uma data né

import java.text.SimpleDateFormat;
import java.util.Date;

public class Main {

	public static void main(String[] args) {

		Date data = new Date();
		// data
		System.out.println(data);

		String dp = data.toString();
		// String da data
		System.out.println(dp);

		SimpleDateFormat df = new SimpleDateFormat("dd/mm/yyyy");

		System.out.println(df.format(data));
		// string da data formatada
		String dpal = df.format(data);
		System.out.println(dpal);
	}
}

teste isso e ve se te ajuda

Edit: comentado pra te ajudar!

Galera, consegui resolver.

A string era ‘Wed Jun 01 00:00:00 BRT 2011’. Foi preciso forçar o locale do parse para funcionar.

this.dado = new SimpleDateFormat("dd/MM/yyyy") .format(new SimpleDateFormat("EEE MMM d HH:mm:ss zzz yyyy", Locale.US).parse(dado)); Antes ele só funcionaria se a string fosse ‘Qua Jun 01 00:00:00 BRT 2011’, por exemplo.

Vlw!

2 curtidas

Muitíssimo obrigada .paula , sua solução me salvou!:slight_smile: