Problema sério com datas

Gente, to postando esse tópico pq li dezenas de outros e ainda não achei o que queria.

O problema é o seguinte: tenho um cadastro de usuários em um db SQL SERVER com o campo NASCIMENTO, que é do tipo smalldatetime.

o conteúdo deste campo varia entre nulo e a data.

quando peço para retornar o valor do campo, retorna 1900-01-01 00:00:00.0, por exemplo.

E eu preciso dele formatado de acordo com o locale definido (que no caso do meu sistema pode ser pt-BR ou en-US.

Já tentei usar vários métodos, e nenhum deles dá certo.

Alguém tem alguma dica bem simples de como fazer isso?

Tentei com o seguinte código:

Locale bLocale = new Locale("pt", "BR");

forma = "2004-05-05";
SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy"); 
java.sql.Date dataConvertida = new java.sql.Date(df.parse(forma).getDate());

e dá o seguinte erro:

java.text.ParseException: Unparseable date: "2004-05-05" at java.text.DateFormat.parse(DateFormat.java:335)

Já perdi a tarde inteira e nada de conseguir formatar essa bendita data :confused:
Converter string pra data, que é outra coisa que quero fazer,tb não tá dando certo.

Alguém me dá um help?

se não me engano vc está tentando criar uma data com o valor formatado. uma data é independente de Locale, vc só deve formatar a data no momento em que for exibi-la. A formatação sim depende da Localidade…

pois eh, continuo boiando.

Tentei usar o exemplo do site da Sun:

Date today;
String dateOut;
DateFormat dateFormatter;

dateFormatter = DateFormat.getDateInstance(DateFormat.DEFAULT, bLocale);
today = new Date();
dateOut = dateFormatter.format(today);

out.println("Data formato padrão: "+dateOut + " " + bLocale.toString()+"<br>");

o problema é que não consigo converter a string pra data. Mesmo que eu use um getDate pra pegar o valor do campo, tem horas que eu tenho uma string com o valor, e não o objeto data.

rashi dê uma olhada.

        DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy", new Locale("pt","br"));
        long timestamp = dateFormat.parse("12/06/2004").getTime();
        java.sql.Date dataConvertida = new java.sql.Date( timestamp ); 

AlcidesFlach

Valeu pessoal

Consegui resolver do seguinte jeito:

SimpleDateFormat formatter;
String pattern = "yyyy-MM-dd";
Locale bLocale = new Locale("pt","BR");

Date today;
		
formatter = new SimpleDateFormat(pattern, bLocale);
today = new Date();
today = formatter.parse(data);
			
pattern = "dd/MM/yyyy";
formatter = new SimpleDateFormat(pattern, bLocale);
retorno = formatter.format(today);

Ficou esquisito, mas só funcinou assim :confused: