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")));