SimpleDateFormat

3 respostas
B

Pessoal, postei o tópico http://www.guj.com.br/posts/list/19469.java pois preciso convertar datas para utilizar i18n no meu projeto.

Ainda não obtive resposta, mas continuei procurando no google e li tb alguns tópicos no próprio guj.

Ficou claro para mim que se eu utilizar o SimpleDateFormat é possível formatar a data da forma que eu desejar, vai depender do pattern que eu informar…

Meu problema é que um usuário da alemanha(ou qq outro país) vai digitar uma data no formato, por exemplo, “05-21-05”(yy-dd-MM), se é que existe… E eu quero converter para “dd/mm/yyyy”. O problema é: NÃO SEI O PATTERN da alemanha. Como utilizar o dateFormat então?

Note que no tópico que postei o método recebe duas Locale, pois achei que poderia encontrar nela alguma informação deste tipo…Parece que não.

Resumo: preciso convertar uma data de um país para o outro, mas precisaria descobrir o pattern “dinâmicamente”.

Obrigado

3 Respostas

T

A determinação do Locale depende de como está configurada a aplicação Web.
Pode-se obter esse locale automaticamente (ou seja, via um header HTTP que é enviado pelo browser e configurado - no Internet Explorer a configuração é em Tools | Internet Options | clicar Languages, no Firefox é em Tools | Options, clicar em General, clicar Languages), ou então associar um locale a cada usuário, por exemplo, se ele clicar em alguma bandeirinha (seria uma variável de sessão).
Bom, há serviços (não sei se existe algum gratuito) que a partir do IP (REMOTE_ADDRESS) lhe permitem determinar, com alguma precisão, a partir de que país está sendo feita a requisição, mas se lembre que em um país como o Canadá não se fala somente inglês; há áreas que falam francês, por exemplo (Na Suíça não se fala somente alemão, e assim por diante). Por isso é melhor usar a solução anterior.

B

Hoje eu recupero o Locale via request.getLocale()… já funciona.

Mas o que eu preciso saber “dinamicamente”, é o pattern da data naquele locale. Como eu sei que alemão é “yyyy/dd/MM”(exemplo) e americano é “yyyy/MM/dd”?

T

No Javadoc de java.text.DateFormat:

To format a date for a different Locale, specify it in the call to getDateInstance().

DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE);

Criado 21 de janeiro de 2005
Ultima resposta 24 de jan. de 2005
Respostas 3
Participantes 2