Como transformar essa string em data?

Oi gente,

estou com dificuldade pra transformar essa string em Date ou Calendar, já tentei com diversos jeitos no simple date format não consegui resultado.

Se puderem me ajudar.

O formato da data está assim:

String data = "Tue Oct 04 09:50:35 BRT 2011";

Dia da semana - mês - dia - hora - LOCALE - ano

E preciso de um calendar ou date.

Pelo formato, ela não está sendo gerada como uma java.util.Date?

Isso é uma linha de arquivo de log, tenho que processar o arquivo de log.

tenta utilizar o SimpleDateFormat

SimpleDateFormat sdf = new SimpleDateFormat(formatoDaData);
                sdf.parse(string);

[quote=caio.gaspar]tenta utilizar o SimpleDateFormat

SimpleDateFormat sdf = new SimpleDateFormat(formatoDaData); sdf.parse(string); [/quote]
Não funciona para o tipo de String passada.
Somente com formatos como yyy-MM-dd ou dd/MM/yyyy

Neste caso, você precisa ler a String, separá-la em partes e ir convertendo para uma String amigável, que possa ser parseada pelo DateFormat…

[quote=caio.gaspar]tenta utilizar o SimpleDateFormat

SimpleDateFormat sdf = new SimpleDateFormat(formatoDaData); sdf.parse(string); [/quote]

O problema é : qual o formatoDaData?

Já tentei diversos e não consegui, tenho varias conversões do tipo “ddMMyyyyhhmmss”, “dd/MM/yyyy”.

A questão é, qual o formato pra esse tipo de data acima? Qual pattern usar eis a questão.

Vai aí uma gambiarra para testar…

public class Dates {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Date d = new Date();
		String time = d.toString();
		System.out.println(time);
		String[] timeComp = time.split(" ");
		StringBuffer dtFormatada = new StringBuffer();
		dtFormatada.append(timeComp[2]);
		dtFormatada.append("/");
		dtFormatada.append(calcMes(timeComp[1]));
		dtFormatada.append("/");
		dtFormatada.append(timeComp[5]);
		dtFormatada.append(" ");
		dtFormatada.append(timeComp[3]);
		DateFormat df = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
		try {
			Date d1 = df.parse(dtFormatada.toString());
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}
	public static String calcMes(String mes){
		String m = "";
		if("JAN".equals(mes.toUpperCase())){
			m = "01";
		}else if("FEB".equals(mes.toUpperCase())){
			m = "02";
		}else if("MAR".equals(mes.toUpperCase())){
			m = "03";
		}else if("APR".equals(mes.toUpperCase())){
			m = "04";
		}else if("MAY".equals(mes.toUpperCase())){
			m = "05";
		}else if("JUN".equals(mes.toUpperCase())){
			m = "06";
		}else if("JUL".equals(mes.toUpperCase())){
			m = "07";
		}else if("AUG".equals(mes.toUpperCase())){
			m = "08";
		}else if("SEP".equals(mes.toUpperCase())){
			m = "09";
		}else if("OCT".equals(mes.toUpperCase())){
			m = "10";
		}else if("NOV".equals(mes.toUpperCase())){
			m = "11";
		}else if("DEC".equals(mes.toUpperCase())){
			m = "12";
		}		
		return m;
	}
public class Carro{

//Construtor
public Carro(){
    numeroPortas = 2;
}

//Atributos primitivos
private int numeroPortas;
public boolean gasolina = true;
private double preco;

//Atributos de classes
private String nomeProprietario;
private Color cor;

//Método
public int colocarNumeroPortas( boolean ehPequeno, double precoVenda){
int nrPortas = 0;
if((ehPequeno) && (precoVenda>20000))
    nrPortas = 2;
else
    nrPortas = 4;
return nrPortas;
}
Private String nomeProprietario = new String("Antonio");

[code]
public class LojaDeCarros{

//Atributo de classes
private Carro car = new Carro();

//Metodo
public void verNumeroPortas(){
int nr = car.colocarNumeroPortas(true, 25000);
System.out.println(“Este carro tem " + nr + " portas”);
}
}[/code]

Se não me engano é algo assim:
formatter = new SimpleDateFormat(“EEE MMM dd hh:mm:ss z yyyy”);

[quote=JoaoBluSCBR][code]
class Carro {

}
[/code][/quote]
???

Dá uma olhada no método toString da classe Date

http://download.oracle.com/javase/6/docs/api/java/util/Date.html#toString

e você pode verificar o que é cada letra aqui:

http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

[quote=edudebom]Se não me engano é algo assim:
formatter = new SimpleDateFormat(“EEE MMM dd hh:mm:ss z yyyy”);[/quote]

java.text.ParseException: Unparseable date: "Tue Oct 04 15:39:55 BRT 2011"
	at java.text.DateFormat.parse(Unknown Source)
	at main.Dates.main(Dates.java:19)

Não precisa desse código todo… basta usar a API do SimpleDateFormat, muito simples:

Faça apenas isso e está resolvido:

String data = "Tue Oct 04 09:50:35 BRT 2011";
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);
Date dt = sdf.parse(date);

[]'s Hewerton Crisóstomo

[quote=Javabuntu]Não precisa desse código todo… basta usar a API do SimpleDateFormat, muito simples:

Faça apenas isso e está resolvido:

String data = "Tue Oct 04 09:50:35 BRT 2011";
SimpleDateFormat sdf = new SimpleDateFormat(""EEE MMM dd HH:mm:ss z yyyy"", Locale.US);
Date dt = sdf.parse(date);

[]'s Hewerton Crisóstomo

[/quote]

Fato!

[code]public Date formatarData(String data) throws ParseException{

    DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
    return new Date(df.parse(data).getTime());
}
public String formatarDataString(Date data) throws ParseException{
    SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
    String dataFormatada = df.format(data);
    return dataFormatada;[/code]