关于JDK中的Date类
java.util.Date
( Date 表示特定的瞬间,精确到毫秒)
JDK1.1 之前,Date 允许把日期解释为年、月、日、小时、分钟和秒值,也允许格式化和解析日期字符串。
不过从JDK1.1开始,应该使用Calendar类实现日期与时间字段之间转换,使用DateFormat来格式化和解析日期字符串。
java.sql.Date
(继承java.util.Date 包装了毫秒值的瘦包装器,允许JDBC将毫秒值标识为SQL DATE值)
从上面类的层次结构看,将java.util.Date转为java.sql.Date时候,日期的时分秒会被去掉,数据的精度发生变化了。这是两个上下级类之间很不合理的问题。而JDBC中定义接口时候,用的是java.sql.Date,而我们常常用到的Date都是java.util.Date,这往往导致一些转换过程中发生误差。
于是java.sql.Timestamp类诞生了,它保持了日期数据原有的精度。可以实现和java.util.Date的无损转换。但是Timestamp这个类在一些预定义SQL中常常会出问题,报错!
使用Joda Time 代替 Calendar
与Clendar相比,Joda-Time 令时间和日期值变得易于管理、操作和理解。