java.sql.Date是java.util.Date的子类
因此,两者都有getTime方法,java.sql.Date没有重写,返回long类型,即时间戳:
the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by this date.
public long getTime()
相互转换
他们都有getTime方法
而且他们都有public Date(long date)构造方法,同样,参数为时间戳
所以他们可以互相转换。先getTime,再通过构造方法构造另一种类型。
异同
使用JDBC的时候preparement中getDate()与setDate(xxx)中返回与传入的参数都是java.sql.date,所以要先进行转换
java.sql.date 没有无参的构造函数,必须传值java.util.date可以使用无参构造函数,获取的是当前的时间
java.sql.date的时间格式是年-月-日,没有时间部分。强制获取时分秒,会抛异常。但是不代表没有时间部分的精度。
sqlDate.getTime() == utilDate.getTime() //true
以上是相同时间戳构建的sqlDate和utilDate
两个对象都能使用类SimpleDateFormat进行格式化
new SimpleDateFormat("yyyy-mm-dd hh:mm:ss")
java.sql.date 通过格式化后可以显示时分秒,也就是他时分秒的精度并没有丢失
tostring()不同, java.sql.Date对其进行了重写。
java.util.Date: dow mon dd hh:mm:ss zzz yyyy
java.sql.Date: yyyy-mm-dd