Java时间相关内容学习(3) Date2014-08-06本章主要介绍Date类,并通过示例学习如何使用它。最后,讲解一下UTC、GMT和时区的关系。Date 介绍Date 定义public class Date implements java.io.Serializable, Cloneable, Comparable<Date> {}Date 是表示时间的类。
一个Date对象表示一个特定的瞬间,能精确到毫秒。我们可以通过这个特定的瞬间,来获取到Date对应的“年、月、日、时、分、秒”。反之亦然,我们也可以通过设置Date的“年、月、日、时、分、秒”等信息,来改变Date所指定的特定瞬间。
除了“年月日时分秒”等信息之外,Data也允许格式化和解析日期字符串。即,我们可以定义一个字符串,这个字符串包含时间信息,然后将字符串通过Date来解析,从而得到相应的Date对象。在 JDK 1.1 之前,通常是通过Data操作“年月日时分秒”。不过,由于Date的相关 API 不易于实现国际化。从 JDK 1.1 开始,应该使用 Calendar 类来操作“年月日时分秒”,同时可以通过 DateFormat 类来格式化和解析日期字符串。Date 中的相应方法已废弃。Date和Calendar相互转换(01) Date转换为Calendar// 新建date,且日期/时间为2013-09-19 14:22:30
Date date = new Date(113, 8, 19, 14, 22, 30);
// 新建Calendar对象,并设置日期为date
Calendar cal = Calendar.getInstance();
cal.setTime(date);(02) Calendar换为Date// 新建Calendar对象
Calendar cal = Calendar.getInstance();
// 获取Calendar对应的Date
Date date = cal.getTime();Date 函数列表Date 共包含下面5个构造函数
// Date构造函数一:传入“年、月、日”// (01) 年 -- 减 1900 的年份。若要设为1988,则“年”应该是88。// (02) 月 -- 0-11 的月份。0是一月,1是二月,依次类推。// (03) 日 -- 1-31 之间的某一天。Date(int year, int month, int day) // Date构造函数二:传入“年、月、日、时、分”// (01) 年 -- 减 1900 的年份。若要设为1988,则“年”应该是88。// (02) 月 -- 0-11 的月份。0是一月,1是二月,依次类推。// (03) 日 -- 1-31 之间的某一天。// (04) 时 -- 0-23 之间的小时数。// (05) 分 -- 0-59 之间的分钟数。Date(int year, int month, int day, int hour, int minute) // Date构造函数三:传入“年、月、日、时、分、秒”// (01) 年 -- 减 1900 的年份。若要设为1988,则“年”应该是88。// (02) 月 -- 0-11 的月份。0是一月,1是二月,依次类推。// (03) 日 -- 1-31 之间的某一天。// (04) 时 -- 0-23 之间的小时数。// (05) 分 -- 0-59 之间的分钟数。// (06) 秒 -- 0-59 之间的秒钟数。Date(int year, int month, int day, int hour, int minute, int second) // Date构造函数四:传入“毫秒”。 毫秒 = “目标时间” - “1970-01-01 00:00:00 GMT”Date(long milliseconds) // Date构造函数五:传入“字符串”。Date(String string)
Date的操作API
// 根据参数确定日期和时间。这些参数被解释为年份、月份、月中某一天、一天中的某一小时、小时中某一分钟和分钟中的某一秒。static long UTC(int year, int month, int day, int hour, int minute, int second)// 此日期是否在指定日期之后。boolean after(Date date)// 此日期是否在指定日期之前boolean before(Date date)// 返回此对象的副本。Object clone()// 比较两个日期的顺序。int compareTo(Date date)// 比较两个日期是否相等。boolean equals(Object object)// 返回此 Date 对象表示的月份中的某一天。返回的值在 1 和 31 之间,表示包含或开始于此 Date 对象表示的时间的月份中的某一天(用本地时区进行解释)。int getDate()// 返回此日期表示的周中的某一天。返回值 (0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, 4 = Thursday, 5 = Friday, 6 = Saturday) 表示一周中的某一天int getDay()// 返回此 Date 对象表示的小时。返回值是一个数字(0 至 23)int getHours()// 返回此日期所表示的小时已经过去的分钟数(用本地时区进行解释)。返回值在 0 和 59 之间。int getMinutes()// 返回表示月份的数字,该月份包含或开始于此 Date 对象所表示的瞬间。返回的值在 0 和 11 之间。0为一月,1为二月,依次类推。int getMonth()// 返回此日期所表示的分钟已经过去的秒数。返回的值在 0 和 61 之间。值 60 和 61 只可能发生在考虑了闰秒的 Java 虚拟机上。int getSeconds()// 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。long getTime()// 返回相对于 UTC(相应于此 Date 对象表示的时间)的本地时区的偏移量(以分钟为单位)。int getTimezoneOffset()// 返回一个值,此值是从包含或开始于此 Date 对象表示的瞬间的年份减去 1900 的结果(用本地时区进行解释)。int getYear()// 哈希值int hashCode()// 把字符串 s 解释为日期和时间的表示形式。static long parse(String string)// 把此 Date 对象的月份中的某一天设置为指定值。void setDate(int day)// 把此 Date 对象的小时设置为指定值。void setHours(int hour)// 把此 Date 对象的分钟数设置为指定值。void setMinutes(int minute)// 把此日期的月份设置为指定值。0为一月,1为二月,依次类推。void setMonth(int month)// 把此 Date 的秒数设置为指定值。void setSeconds(int second)// 设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。void setTime(long milliseconds)// 把此 Date 对象的年份设置为指定的值加 1900。void setYear(int year)// 返回GMT字符串String toGMTString()// 返回本地字符串String toLocaleString()// 返回字符串String toString()