第65集:常用类Date类的使用JDk源码分析
Date时间类(java.util.Date)
在标准Java类库中包含一个Date类。它的对象表示一个特定的瞬间,精确到毫秒。
-
Date()分配一个Date对象,并初始化此对象为当前的日期和时间精确到毫秒。
public Date() { this(System.currentTimeMillis()); }
-
Date(long date) 分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。
/** * Allocates a
Date
object and initializes it to * represent the specified number of milliseconds since the * standard base time known as "the epoch", namely January 1, * 1970, 00:00:00 GMT. * * @param date the milliseconds since January 1, 1970, 00:00:00 GMT. * @see java.lang.System#currentTimeMillis() */public Date(long date) { fastTime = date;} -
boolean after(Date when) 测试此日期是否在指定日期之后。
public boolean after(Date when) { return getMillisOf(this) > getMillisOf(when);}
-
boolean before(Date when) 测试此日期是否在指定日期之前。
public boolean before(Date when) { return getMillisOf(this) < getMillisOf(when);}
-
Boolean equals(Object obj) 比较两个日期的相等性。
public boolean equals(Object obj) { return obj instanceof Date && getTime() == ((Date) obj).getTime();}
-
Long getTime()返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
public long getTime() { return getTimeImpl();}private final long getTimeImpl() { if (cdate != null && !cdate.isNormalized()) { normalize(); } return fastTime;}
-
void setTime(long time)返回
public void setTime(long time) { fastTime = time; cdate = null;}
String toString() 把此 Date 对象转换为以下形式的 String:dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
MAC导入类的快捷键:command+shift+O
查看API文档大家可以看到很多方法过时了,JDK1.1之前的Date包含了:日期操作、字符串转化成时间对象、时间对象。1.1之后,日期操作使用:Canlendar类来,字符串转化成为时间对象使用DateFormat。
示例代码
public class Test065 { public static void main(String[] args){ Date d = new Date();//得到当前时间的毫秒数 long a = System.currentTimeMillis(); System.out.println(d); System.out.println(a); Date d2 = new Date(1000); System.out.println(d2.toString());//自动加了时区 System.out.println(d2.toGMTString());//标准格林尼治时间,已不建议使用 d2.setTime(232323423); System.out.println(d2.getTime()); System.out.println(d.getTime()d2.getTime());//等同于after System.out.println(d.after(d2)); Date date1 = new Date(); System.out.println(date1.toString()); long i = date1.getTime(); System.out.println(i); Date date2 = new Date(i-1000); Date date3 = new Date(i+1000); System.out.println(date1.after(date2)); System.out.println(date1.before(date2)); System.out.println(date1.equals(date2)); System.out.println(date1.after(date3)); System.out.println(date1.before(date3)); System.out.println(date1.equals(date3)); System.out.println(new Date(1000L*60*60*24*365*39L).toString()); }}
第66集:常用类DateFormat和SimpleDateFormat时间和字符串的互相转换
DateFormat和SimpleDateFormat类的作用:将时间对象与指定格式的字符串进行互相转化。
DateFormat是一个抽象类,一般使用其子类SimpleDateFormat类。
格式化字符含义
示例代码
package com.test066; import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date; public class Test066 { public static void main(String[] args) { Date a = new Date(123124124L); System.out.println("直接输出Date对象的结果:\t" + a); //System.out.println(a.toString()); DateFormat b = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String str = b.format(a); System.out.println("使用DateFormat类的format方法将Date对象处理成格式化字符串的结果:\t" + str); String str2 = "1977-7-7"; DateFormat c = new SimpleDateFormat("yyyy-MM-dd"); try { Date d = c.parse(str2); System.out.println("使用DateFormat类的parse方法将格式化字符串处理成Date对象的结果:\t" + d); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}