Eu estou usando o seguinte código para obter a data e hora atual, mas a saída não é o que eu estou esperando e eu não posso salvá-lo no banco de dados.
Saída >> atual: terça-feira, 05 de maio 09:58:26 EST 2013
Saída esperada >> atual: 2013-03-05 9:58:26
.....{
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat parseFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
try {
System.out.println("current: " +parseFormat.parse(dateFormat.format(date)));
return parseFormat.parse(dateFormat.format(date));
} catch (ParseException ex) {
Logger.getLogger(ConstructionModel.class.getName()).log(Level.SEVERE, null, ex);
}
return date;
}
......
ps.setDate(....) <<< failed
Base de dados
name type
mydate Date
Respostas:
2 para resposta № 1Você precisa usar o timestamp sql para salvar no banco de dados. Converta seu java.util.Date para java.sql.Timestamp:
ps.setTimestamp(new java.sql.Timestamp(myDate.getTime()));
3 para resposta № 2
Você não precisa analisar antes de formatar:
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
String frmtdDate = dateFormat.format(date);
System.out.println("frmtdDate: " + frmtdDate);
No entanto, se você estiver tentando ajustar a data em alguma instrução DB, você não deve fazê-lo na forma de texto; em vez disso, use um dos configuradores JDBC que utilizam java.sql.Date
ou java.sql.Timestamp
1 para resposta № 3
format
Leva um Date
e retorna um formatado String
. parse
leva um formatado String
e retorna um Date
objeto. Quando você faz parseFormat.parse(dateFormat.format(date))
você está convertendo Date
para String
e para Date
novamente. O valor que é impresso é a representação padrão fornecida por Date.toString()
em vez da string formatada.
System.out.println("current: " +dateFormat.format(date));