我的数据库中表的字段是date类型,所以Hibernate影射文件所对应的字段是java.util.Date类型.
一开始我用的是最直接的
obj.setDate(new Date(request.getParameter("date")));
但是new Date(request.getParameter("date"))是存在安全问题的!是一个已过时的方法,而且好像Hibernate对这个方法也不支持。
数据插入也不成功!那到底怎样才能把一个取回来yyyy-mm-dd的数据转换为一个date类型的数据呢?百度了一下找到下面的两种方式:
- public static void main(String[] args) {
- String d = "2008-10-13 15:20:25";
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
- try {
- System.out.println(sdf.parse(d));
- } catch (Exception e) {
- }
- }
不过这种方法转换出来的结果是我的时间少了10个月,当然我转的格式是:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
并没有要时分秒!会少10个应该是各方法设置的月份转换的问题!
那所以这种方法最后没被采用!
二、用java.sql.Date类
try{
String SD = "1999-01-31";
java.sql.Date d1 = java.sql.Date.valueOf(SD);
System.out.println(d1);
java.text.SimpleDateFormat input_str= new java.text.SimpleDateFormat( "yyyy/mm/dd" );
String tmpDate = "2000/03/02";
java.util.Date xdate = input_str.parse( tmpDate );
java.sql.Date d = new java.sql.Date(xdate.getTime());
System.out.println(d);
}catch(java.text.ParseException pe)
{
System.out.println(" Error " + pe);
}
最后是第二种方法转换成功了^O^