[RESOLVIDO] Erro ao converter string para data

8 respostas
paula1

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.

8 Respostas

nel

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.

paula1

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

nel

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.

MaiqueL
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());
	}
}

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

paula1

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!

T

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

paula1

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!

livaper

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

Criado 20 de junho de 2011
Ultima resposta 11 de jan. de 2013
Respostas 8
Participantes 5