Problema com Datas

E ai pessoal,



Tenho um BD em Access, com uma tabela usuario e um campo "dataNasc" do tipo Data/Hora, acontece que quando abro o BD vejo uma data no seguinte formato "23/04/1999".



E tenho um servlet que apresenta este registro na página, ou seja faço uma busca no banco de dados e mostro a data na página, mais ou menos assim:



stmt = con.createStatement();

rs = stmt.executeQuery("select blablabla…");



String dNasc;

dNasc = rs.getString("dataNasc");



Tudo esta ocorrendo bem, mas quando imprimo a dNasc na tela tenho a seguinte saida:



1999-04-23 00:00:00



E se uso o método:



Date dNasc = null;

dNasc = rs.getDate("dataNasc");



Ocorre um erro de tipos incompatíveis.



Bom, finalizando eu gostaria que o formato data impressa fosse apenas "23/04/1999"e NÃO "1999-04-23 00:00:00", já que no banco de dados está tudo correto e quando recupero a data estou recuperando como String. Porque e como o java formata essa Data ???





Se alguem puder me ajudar eu agradeço !!!



Oswaldo Neto

cafejava@bol.com.br

[ Editado por Oswaldo No dia -1 ]

Ai pessoal, eu mesmo consegui achar uma solução para o meu problema depois de tanto bater a cabeça, ai vai pra quem se interessou!!



Em primeiro lugar como a data esta no formato string então, deve ser convertida para o tipo Date.



Importe:

-----------------------------------------------------



import java.util.Date;

import java.text.SimpleDateFormat;

import java.text.ParseException;



Crie o método

-----------------------------------------------------



public Date StringToDate(String vData) {



SimpleDateFormat formatoData = new SimpleDateFormat("yyyy-MM-dd");



Date dataRetorna = null;



try {

dataRetorna = formatoData.parse(vData);

}

catch (Exception e) {

System.out.println(e.toString());

return null

}

return dataRetorno;

}





Agora passe a data no formato String para o método, que vai retornar uma Data

----------------------------------------------------



Date d = objeto.StringToDate("1999-06-23");



e para colocar a data no formato correto use:

----------------------------------------------------



System.out.println (



d.getDate() + "/" +

(d.getMonth() + 1) + "/" +

(d.getYear() + 1900)



);





Se você não entendeu ainda e quer saber como faz mande um e-mail.



Oswaldo Neto

cafejava@bol.com.br

Show de bola oswaldo e que atitude legal a sua contribuir para com o pessoal deste conhecimento adquirido através de uma dificuldade encontrada por você.



Um abraço

Dalton

Oswaldo,



É mais simples deste jeito:



Locale loc = new Locale("pt","br");

SimpleDateFormat frm = new SimpleDateFormat("dd´/´MM´/´yyyy",loc);



out.println(frm.format((Date)rs.getDate("campodata")));