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”).
É 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?
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.
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);
}
}
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.