Eu recebo uma data de um formulário, e converto ela pra poder salvar no meu banco no postgres, só que sempre salva com a data de 1969-12-31. Se alguém puder me dar um norte onde eu tô errando.
Meu código
//Abaixo se encontra o meu formulário, nele eu coloco a data de nascimento
Você já testou a saída de dataNasc para ver como está? Além disso, java.sql.Date deve receber um long que é obtido chamando o método getTime da classe java.util.Date. Logo:
stmt.setDate(1, new java.sql.Date(a.getDataNasc().getTime()));
Se foi salvo como 0021/05/19, evidente que está errado, pois deveria ser 2020/05/13, se for o dia de hoje e 2021/05/19 se for uma data futura.
Veja quanto vale dataNasc no DAO colocando um sisout logo depois da declaração do método cadastrarUsuario:
public void cadastrarUsuario(Pessoa a) {
System.out.println(a.getDataNasc() instanceof java.util.Date)
System.out.println(a.getDataNasc());
/*Connection con = Conexao.getConnection();
PreparedStatement stmt = null;
try{
String sql = "INSERT INTO pessoa (datanascimento) VALUES(?)";
stmt = con.prepareStatement(sql, stmt.RETURN_GENERATED_KEYS);
stmt.setDate(1, new java.sql.Date(a.getDataNasc().getDate()));
final ResultSet rs = stmt.getGeneratedKeys();
if (rs.next()){
a.setUltimaId(rs.getInt(1));
ultimaId = a.getUltimaId();
}
}catch (SQLException ex){
System.out.println(ex);
}finally{
Conexao.closeConnection(con, stmt);
}*/
}
Daí veja o que aparece.
Observação: por convenção, a primeira letra de um método é grafada em minúsculo.
Então, esses dois prints me retornam respectivamente o seguinte:
true
Mon May 19 00:00:00 BRT 21
Eu coloquei vários println em diversos pontos, e do formulário ele tá recebendo certo, o problema é a partir do dateFormat.parse(datanascimento), no qual ele me retorna:
Mon May 19 00:00:00 BRT 21
Eu vou pesquisar o que pode ser, mas se você já teve o problema antes, e puder dar uma luz eu te agradeço.