Só para finalizar, vou mostrar como é que se faz essa conversão.
[quote=oitathi]eu não recebo uma data, recebo uma string
e para facilitar a leitura de vcs, eu quero tranformar essa string em outra… apenas com dd/mm/yyyy
podia ficar dando split…mas fiaria feio… queria saber se tem um jeito mais bonito[/quote]
Não é só dar split também, por que você tem Aug como mês, e não 08.
É bem sério, se você olhar a tabelinha e os exemplos que existem na documentação, você resolve isso rapidinho com alguns testes.
Ah, vai uma dica, você pode ter que usar um Locale diferente.
tente algo parecido com isso:
DateFormat newStyle = new SimpleDateFormat("dd/MM/yyyy");
//trabalhe com estes parametros E MMM dd HH:mm:ss z yyyy
DateFormat df = new SimpleDateFormat(
"E MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
Date data = df.parse(data.toString().trim());
String formatedDate = newStyle.format(data);
return formatedDate;
veja os formatos aki
http://javatechniques.com/blog/dateformat-and-simpledateformat-examples/
http://docs.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html
package guj;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class ExemploCompletoSimpleDateFormat {
public static void main(String[] args) throws ParseException {
String original = "Mon Aug 27 2012 00:00:00 GMT-03:00";
SimpleDateFormat sdf1 = new SimpleDateFormat ("EEE MMM dd yyyy HH:mm:ss z", Locale.US);
SimpleDateFormat sdf2 = new SimpleDateFormat ("dd/MM/yyyy");
Date dt = sdf1.parse(original);
String str = sdf2.format(dt);
System.out.println (str); // deve imprimir "27/08/2012"
}
}
A propósito, ainda acho estranho você receber essa String, porque ela é muito desajeitada para usar, como você deve ter visto. Você realmente não recebe um java.util.Date ou um java.sql.Date?
É, ELE NÃO RECONHECE A STRING Q CHEGA NO FORMATO “E MMM dd HH:mm:ss z yyyy”, Locale.ENGLISH
ELE NÃO CONSEGUE FAZER O PARSE
eh q tô mexendo com dojo…
a string chega assim…
talvez exista alguma coisa no dojo que trate isso, mas não consegui achar
É que o lgweb não testou a string do SimpleDateFormat antes de postar. Eu testei a minha e a minha está funcionando
o problema é que ele vem com o (Hora oficial do Brasil) na string… talvez se eu der um trim, funcione
Mexendo com dojo? Está de castigo, por acaso?
Enfim, talvez o problema esteja no que o dojo retorna de um datepicker (creio que seja o caso)
Vi aqui
Coloca seu código ai!
faz isso>
public static void main(String ...args){
// Mon Aug 27 2012 00:00:00 GMT-0300 (Hora oficial do Brasil)
StringBuilder value = new StringBuilder("Mon Aug 27 2012 00:00:00 GMT-0300 (Hora oficial do Brasil");
value.delete(value.length() -33, value.length());
//"EEE, d MMM yyyy HH:mm:ss Z" Wed, 4 Jul 2001 12:08:56 -0700
DateFormat newStyle = new SimpleDateFormat("dd/MM/yyyy");
DateFormat df = new SimpleDateFormat(
"E MMM dd yyyy HH:mm:ss",Locale.US);
Date data = null;
try {
data = df.parse(value.toString().trim());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String formatedDate = newStyle.format(data);
System.out.println(formatedDate);
}
POXA GENTE, VALEU:
Mas a formatação da string q chega ficou bem feia…
public void setDataVinculo(String dataVinculo) throws ParseException {
dataVinculo = dataVinculo.substring(0,dataVinculo.lastIndexOf("3")+1)+":00";
SimpleDateFormat sdf1 = new SimpleDateFormat ("EEE MMM dd yyyy HH:mm:ss z", Locale.US);
SimpleDateFormat sdf2 = new SimpleDateFormat ("dd/MM/yyyy");
Date dt = sdf1.parse(dataVinculo);
this.dataVinculo = sdf2.format(dt);
}