Como transformar essa string em data?

15 respostas
carol_programadora

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.

15 Respostas

drsmachado

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

carol_programadora

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

caio.gaspar

tenta utilizar o SimpleDateFormat

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

caio.gaspar:
tenta utilizar o SimpleDateFormat

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


Não funciona para o tipo de String passada.
Somente com formatos como yyy-MM-dd ou dd/MM/yyyy

drsmachado

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…

carol_programadora

caio.gaspar:
tenta utilizar o SimpleDateFormat

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

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.

drsmachado

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;
	}
JoaoBluSCBR
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");
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");
}
}
E

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

drsmachado
JoaoBluSCBR:
class Carro {

}
???
zoren

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

drsmachado

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

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

drsmachado

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

Fato!

Diego_Adriano
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;
Criado 4 de outubro de 2011
Ultima resposta 4 de out. de 2011
Respostas 15
Participantes 8