通过查看API可以很容易知道,util.Date类时sql.Date的父类,所以根据向上转型的原理可以很简单的知道时可行的,不用做转换都可以。
但是如果想要将util.Date转化为sql.Date,是不存在向下直接转型的!
1 String str="2010-10-10"; 2 Date date1=null; 3 try { 4 date1 = new SimpleDateFormat("yyyy-MM-dd").parse(str); 5 } catch (ParseException e) { 6 e.printStackTrace(); 7 } 8 9 //这是我定义的一个在dbutil对象里的update方法用于向数据库中插入数据 10 dbutil.update("张三",date1);
以上代码提示以下错误:
The method update(java.lang.String, java.sql.Date) in the type DBUtil is not applicable for the arguments (java.lang.String, java.util.Date)
我们认真看API文档会发现:
sql.Date里面有个构造方法:
Date(long date)
使用给定毫秒时间值构造一个 Date
对象。
恰巧的是强大的JAVA,在util.Date里面有一个为过期的方法:
long |
getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。 |
就提供给这构造函数使用的。
所以可以将上面的代码改正为:
1 String str="2010-10-10"; 2 Date date1=null; 3 try { 4 date1 = new SimpleDateFormat("yyyy-MM-dd").parse(str); 5 } catch (ParseException e) { 6 e.printStackTrace(); 7 } 8 java.sql.Date hiredate=new java.sql.Date(date1.getTime()); 9 dbutil.update("张三",hiredate);
这样就可以正确的转化。
除此之外,还可以:
1 java.sql.Time date1=new java.sql.Time(new java.util.Date().getTime());//时 分 秒 2 java.sql.Timestamp date2=new java.sql.Timestamp(new java.util.Date().getTime());//年 月 日 时 分 秒 毫秒
以上在学习的时候的小总结,若有错误或不足,请大家多多指正。