Formatar Data

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 :slight_smile:

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