java常用数据类型之date类型详解实例介绍



java常用数据类型之date类型详解实例介绍。java.util.Date是我们经常要使用到的日期类的数据类型,由此可见,我们应该多点了解这方面的知识,例如Date类的基本面用法、Date类的方法,Date类型对象的构造方法等。

java api里面日期类型的继承关系如下:

java.lang.Object

     –java.util.Date

         –java.sql.Date

         –java.sql.Time

         –java.sql.Timestamp

java.util.Date表示时间的瞬间,精确度为毫秒>>

Date类型有两个构造函数(其他的构造函数过期了,不过也可以用的。) ,而Date()   Date(long date) 构造函数的主要方法如下:

 boolean after(Date when) 判断此日期是否在指定日期之后。
 boolean before(Date when) 判断此日期是否在指定日期之前。
 Object clone()  返回此对象的副本。
 int compareTo(Date anotherDate) 比较两个日期的顺序。
 boolean equals(Object obj) 比较两个日期的是否相等。
 long getTime()  返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。(最常用的方法了)

java.sql下面的包 主要是用在jdbc下的使用

Timestamp()》》

类型由 java.util.Date 以及单独的毫微秒值组成。只有整数秒才会存储在 java.util.Date 组件中。小数秒(毫微秒)是独立存在的。传递 java.util.Date 类型的值时,Timestamp.equals(Object) 方法永远不会返回 true,因为日期的毫微秒组件是未知的。因此,相对于 java.util.Date.equals(Object) 方法而言,Timestamp.equals(Object) 方法是不对称的。此外,hashcode 方法使用基础 java.util.Date 实现并因此在其计算中不包括毫微秒。

鉴于 Timestamp 类与上面的 java.util.Date 类之间的不同,建议代码一般不要将 Timestamp 值视为java.util.Date 的实例。Timestamp 和 java.util.Date 之间的继承关系实际上指的是实现继承,而不是类型继承。

  构造方法

Timestamp(long time) 
         使用毫秒时间值构造 Timestamp 对象。

 boolean after(Timestamp ts) 指示此 Timestamp 对象是否晚于给定的 Timestamp 对象。
 boolean before(Timestamp ts)  指示此 Timestamp 对象是否早于给定的 Timestamp 对象。
 int compareTo(Date o) 将此 Timestamp 对象与给定的 Date(必须为 Timestamp 对象)相比较。
 int compareTo(Timestamp ts)  将此 Timestamp 对象与给定 Timestamp 对象相比较。
 boolean equals(Object ts)   测试此对象是否等于给定的 Timestamp 对象。
 boolean equals(Timestamp ts) 测试此 Timestamp 对象是否等于给定的 Timestamp 对象。
 int getNanos()(因为刚才说过了 我们不能通过java.util.Date来获得毫秒 ,timestamp就自己提供)
 获取此 Timestamp 对象的 nanos 值。
 long getTime()  返回此 Timestamp 对象表示的自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数。
 void setNanos(int n) 将此 Timestamp 对象的 nanos 字段设置为给定值。
 void setTime(long time)  设置此 Timestamp 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。
 String toString() 使用 JDBC 时间戳转义格式编排时间戳。
static Timestamp valueOf(String s)  将使用 JDBC 时间戳转义格式的 String 对象转换为 Timestamp 值。


该类继承了java.util.Date  所以也继承了里面的方法。该类的主要作用就是在数据库中插入时间,那么问为什么不用java.sql.Date呢,一起来看下java.sql.Date>>

java.sql.Date》》

构造方法Date(long date) 使用给定毫秒时间值构造一个 Date 对象。

 void setTime(long date)  使用给定毫秒时间值设置现有 Date 对象。
 String toString()  格式化日期转义形式 yyyy-mm-dd 的日期。
static Date valueOf(String s)   将 JDBC 日期转义形式的字符串转换成 Date 值。

在用这个java.sql.Date类型插入数据库的时候会发现丢失了时分秒,发生了自动截取,那是为什么呢?其实java.sql.Date是为了配合SQL DATE而设置的数据类型。“规范化”的java.sql.Date只包含年月日信息,时分秒毫秒都会清零。格式类似:YYYY-MM-DD。当我们调用ResultSet的

getDate()方法来获得返回值时,java程序会参照”规范”的java.sql.Date来格式化数据库中的数值。因此,如果数据库中存在的非规范化部分的信息将会被劫取。所以我们要精确的日期时应该使用Timestamp

Time我基本没有用过,也比较简单>>

Time(long time) 
使用毫秒时间值构造 Time 对象。

 void setTime(long time)  使用毫秒时间值设置 Time 对象。

 String toString() 使用 JDBC 时间转义格式对时间进行格式化。
static Time valueOf(String s) 将使用 JDBC 时间转义格式的字符串转换为 Time 值。

现在要进行转换就发现一目了然了>>>基本都是可以通过getTime()方法获得long类型的毫秒数 在通过构造函数把这毫秒数传过去就完成了转换。例如:

java.util.Date d = new java.util.Date(sqlDate.getTime());