Recuperar data com um pattern padrão!

Pessoal estou com um problema relaciona a formatação de datas… eu tenho uma data Date e preciso formatar ela para uma string porem nao posso fixar meu pattern no codigo pois o sistema é internacionalizado eu preciso de algo que eu passo a locale, e um pattern padrão(ingles) e ele formata transformando aquele pattern para a locale respectiva… alguem sabe o que pode solucionar meu problema???

vlwww !

Uai, tanto o DateFormat quanto o SimpleDateFormat tem como construir um objeto de formatação com Locale. Dê uma olhada no javadoc.

tentei fazer isso:

[code]
public static void main(String[] args) {
String pattern = “MMM/dd/yyyy”;
Locale locale = new Locale(“pt”, “BR”);
SimpleDateFormat sdf = new SimpleDateFormat(pattern,locale);

	System.out.println(sdf.format(new Date()));

}[/code]

so q ele esta imprimindo assim:

Mai/16/2008

e tah errado porque em portugues teria q imprimir assim:

16/Mai/2008

eu nao posso fixar um pattern pois o locale não pe fixo!!!

Vc pode utilizar arquivos .properties para fazer internacionalização do pattern, de uma olhada em ResourceBundle.

cara com numeros eu consigo fazer isso sem usar properties… eu faço asim::

			DecimalFormatSymbols formatSymbols = new DecimalFormatSymbols(
locale);
			DecimalFormat df = new DecimalFormat(pattern, formatSymbols);

ai quando eu formato um numero assim:
df.format(value)

ele formata colocando virgula ou ponto! de acordo com o locale!! eu preciso disso na data!!!

O que vc passa na String pattern do DecimalFormat?

Opa, seguinte a aplicação é desktop ou web?

se for desktop você pode obter as configurações de locale e format da própria máquina, se for web ai acredito que você precise utilizar o properties, senão ele vai utilizar a configuração do servidor!

Exemplo para desktop

[code]public static void main(String[] args)
{
//você pode definir qual o locale
//Locale locale = Locale.US;

//ou pegar o locale default da máquina
Locale locale = Locale.getDefault();

//define o tipo de formatação, SHORT, FULL … e o passa o locale
DateFormat df=DateFormat.getDateInstance(DateFormat.SHORT,locale);

    System.out.println(df.format(new Date()));
    		
}[/code]

O DateFormat vem com alguns padrões pré-definidos, mas parece que só o SHORT chega perto do que você quer. Acho que a solução é um ResourceBundle com os padrões de formatação definidos lá.

eu passo o patern em ingles !! que é o default dele, assim:


###,###,##0.00

Esse é o padrão que vc segue para números, se vc tivesse um formato diferente para cada locale esse padrão fixo no codigo seria um problema, pois vc teria que procurar por todos os locais que usam ele.
Exemplo, se alguém te pede para colocar o sinal de dolar $ ou de real R$ na frente do número de acordo com o locale.

Se vc tiver um arquivo de properties separado para cada locale, e em cada arquivo properties vc colocar o padrão daquele locale, vc so tem que consultar desse property e se for necessario alterar o padrão isso será feito em um unico lugar.

Isso concerteza vai te dar um trabalhindo no começo, mas depois vai trazer varias vantagens.