Аз съм с помощта на следния код, за да получите текущата дата и час, но продукцията не е това, което аз очаквам и не мога да го запишете в базата данни.
Изход >> ток: Вт Мар 05 09:58:26 EST 2013
Очакван изход >> текущ: 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
База данни
name type
mydate Date
Отговори:
2 за отговор № 1Трябва да използвате sql timestamp за записване в базата данни. Конвертирайте java.util.Date в java.sql.Timestamp:
ps.setTimestamp(new java.sql.Timestamp(myDate.getTime()));
3 за отговор № 2
Не е необходимо да анализирате преди форматирането:
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
String frmtdDate = dateFormat.format(date);
System.out.println("frmtdDate: " + frmtdDate);
Въпреки това, ако се опитвате да поставите датата в някакъв DB израз, не трябва да го правите под формата на текст, а вместо това да използвате един от създателите на JDBC, java.sql.Date
или java.sql.Timestamp
1 за отговор № 3
format
отнема Date
и връща форматирано String
. parse
се форматира String
и връща a Date
обект. Когато го направиш parseFormat.parse(dateFormat.format(date))
конвертирате Date
да се String
и към Date
отново. Отпечатаната стойност е представянето по подразбиране, предоставено от Date.toString()
вместо форматирания низ.
System.out.println("current: " +dateFormat.format(date));