Problemas com DateFormat

4 respostas
edneymatias

Olá!

O código abaixo numa aplicação java funciona como esperado.

DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM);
System.out.println(df.format(new Date()));

Saída: 25/01/2005.

No entanto, quando faço o mesmo código em uma página JSP o resultdado é diferente: Jan 25, 2005. E para complicar um pouco mais, nas máquina de desenvolvimento não acontece isso, mas quando faço o deploy da aplicação no servidor de teste.

Tanto as máquinas de desenvolvimento quanto o servidor de teste rodam Linux e o timezone do sistema está configurado para Brazil/East. Todas rodam a mesma versão do JBoss (3.2.5) com Tomcat (4.1) e do JDK (1.5.0).

Eu sei que o formato MEDIUM depende do locale do sistema e que o formato SHORT é estritamente numérico, o que resolveria o problema. Porém, o que eu não entendo é porque na mesma máquina de teste, o código retorna resultados diferentes dependendo se é uma aplicação java ou uma página JSP.

Agradeço qualquer ajuda.

Matias!

4 Respostas

T

Por que você não usa o padrão do formato desejado… no caso “dd/MM/yyyy”?

lcmetzger

Tente fazer assim:

System.out.println( new SimpleDateFormat("dd/MM/yyyy").format(Calendar.getInstance().getTime()));

desta maneira o formato é fixado para dia/mes/ano.

:slight_smile:

edneymatias

Olá!

Valeu pelas respostas! Mas…

Se eu forçar um padrão vai funcionar…como no exemplo do Icmetzger…mas não era para o DateFormat considerar o locale do sistema? Não era para o locale do sistema ter um único formato MEDIUM? Como pode uma aplicação java imprimir em um formato e uma página JSP em outro? A única diferença de configuração entre as máquinas de desenvolvimento e a máquina de teste é que a última não roda o x-window. Quando a gente desenvolve e testa nas nossas máquinas, não poderia o X alterar de alguma forma (variável de ambiete) o modo como o tomcat processa os JSP?

Muitas questões em só e-mail! Vou tentar dividir em tópicos diferentes da próxima vez! :wink:

Até,

Matias

T
  1. é, mas eu lhe pergunto, qual é o locale? Imprima o locale para cada uma dessas situações que dão resultados diferentes. Você vai se surpreender.
  2. De novo, qual é o locale? Um único out.println (Locale.setDefault()) no seu JSP ou System.out.println na sua aplicação Java vai imprimir coisas diferentes conforme a aplicação, ou JSP. Tudo é questão de como as coisas estão configuradas.
  3. Acho que não; o que pode mudar é a linguagem default do web browser (usando X você provavelmente está usando o Mozilla configurado para English, e fora do X provavelmente você está usando alguma máquina Windows configurada para português…) Em uma aplicação Java de linha de comando, nem sei que locale está sendo usado no seu Linux (talvez Portuguese)
Criado 26 de janeiro de 2005
Ultima resposta 26 de jan. de 2005
Respostas 4
Participantes 4