DateFormat + Locale + DD/MM/YYYY

Gostaria de formatar meu java.util.Date no formato DD/MM/YYYY de acordo com o Locale, ou seja, se o locale for en fica MM/DD/YYYY e se for pt fica DD/MM/YYYY.

Gostaria que o DateFormat (ou qualquer outra coisa) fizesse isso pra mim, pois não quero ter que me preocupar qual é o formato dessa data na nova zelândia.

Tem como fazer isso em Java ???

Não vale usar SimpleDateFormat no meio de um IF. Isso é exatamente o que eu não quero. Quero uma classe que já me dê isso pronto, pois não quero ter que pesquisar os formatos para cada país.

é ± isto!!!

import java.text.*;
import java.util.*;

/**/

Date data = new Date();
Properties ps = System.getProperties();		
Locale local = new Locale((String)ps.get("user.country"),  (String)ps.get("user.language"));
DateFormat hoje = DateFormat.getDateInstance(DateFormat.MEDIUM, local);
System.out.println(hoje.format(data));

Fala grande saoj! :slight_smile:

Na realidade a linha que faz a mágica é essa:

DateFormat df = DateFormat.getDateInstance(style, locale);

Só é em style usar algum dos estilos pré-definidos (SHORT,MEDIM,LONG) e no locale aí vai variar de acordo com o ambiente. Se for Desktop o jeito que quebrado resolveu fica blz e se for Web e ainda mais com o Mentawai aí não preciso nem dizer, é só corre pro abraço :smiley:

[quote=quebrado]é ± isto!!!

[code]
import java.text.;
import java.util.
;

/**/

Date data = new Date();
Properties ps = System.getProperties();
Locale local = new Locale((String)ps.get(“user.country”), (String)ps.get(“user.language”));
DateFormat hoje = DateFormat.getDateInstance(DateFormat.MEDIUM, local);
System.out.println(hoje.format(data));

[/code][/quote]

Não! O código abaixo imprimiu Aug 6, 2006 para en e 06/08/2006 para pt.


        Date d = new Date();
        
        DateFormat df1 = DateFormat.getDateInstance(DateFormat.MEDIUM, new Locale("en", "US"));
        DateFormat df2 = DateFormat.getDateInstance(DateFormat.MEDIUM, new Locale("pt", "BR"));
        
        System.out.println("en: " + df1.format(d));
        System.out.println("pt: " + df2.format(d));

Qual style usar ??? O MEDIUM como vc viu acima não funcionou!

Se vc quer um estilo que exiba a data somente com números deve usar o SHORT.

http://java.sun.com/j2se/1.5.0/docs/api/java/text/DateFormat.html

Aproveitando o tópico sobre formatação de datas, estou com um pequeno problema usando o Hibernate.

Eu pego minha data no banco que está no formato (yyyy-MM-dd) e gostaria que fosse mostrado no formato dd/MM/yyyy.
Usando o SimpleDateFormat funciona, só que qdo. formata para String, tipo isso:

d=new Date();
 sdf.setLenient(false);
 out.println("Outro teste\nData:"+d);
 sdf.applyPattern("dd/MM/yyyy");
 aux=sdf.format(d);
 System.out.println("String:"+aux);

Agora se eu adicionar essas linhas abaixo fica no formato errado:

d=sdf.parse(aux);
 out.println("Data:"+d);

Estou usando Struts com Hibernate. Qdo. vou alterar algum registro, ele me traz no formato yyyy-MM-dd.

Alguém sabe como posso resolver isso???

Dê uma olhadinha no link acima e veja os métodos parse() e format(). Se vc entender a diferença entre eles vc vai matar esse seu problema mole-mole! :wink: