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