我使用以下代码获取当前日期和时间,但输出不是我所期望的,我无法将其保存到数据库中。
输出>> Current:Tue Mar 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
答案 0 :(得分:3)
格式化之前无需解析:
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语句中,则不应以文本形式进行,而应使用其中一个使用java.sql.Date
或java.sql.Timestamp
<的JDBC setter / p>
答案 1 :(得分:2)
您需要使用sql时间戳来保存到数据库。将您的java.util.Date转换为java.sql.Timestamp:
ps.setTimestamp(new java.sql.Timestamp(myDate.getTime()));
答案 2 :(得分:2)
format
获取Date
并返回格式化的String
。 parse
采用格式化的String
并返回Date
个对象。执行parseFormat.parse(dateFormat.format(date))
后,您正在将Date
转换为String
再转换为Date
。打印的值是Date.toString()
而不是格式化字符串提供的默认表示。
System.out.println("current: " +dateFormat.format(date));