四. Date及其相关类
- Java将1970年1月1日00:00:00定为基准时间,每个度量单位是毫秒(1秒的千分之一)。使用long整型变量来表示时间。从基准时间往前往后几亿年的时间都可以表示。
- 可以使用以下的方法获得现在时刻的"时刻数值"。
long now = System.currentTimeMillis();
这个"时间数值"是所有时间类的核心,年月日都是根据这个"数值"计算出来的。
- Date类:
使用如下方法新建一个Date对象:
Date d1 = new Date(); //默认构造方法,新建的对象为调用时间
Date d2 = new Date(2000); //使用一个长整形
Date类的无参构造方法源码如下:
public Date() {
this(System.currentTimeMillis());
}
发现他也是调用了System.currentTimeMillis();
这个方法,所以默认构造是当前时间。
date类的常用方法:
方法名 | 方法作用 |
after | 测试该日期是否在指定日期之后 |
before | 测试该日期是否在指定日期之前 |
getTime | 返回从1970 01.01 00:00:00以来此Date对象的表示的毫秒数 |
toString | 返回为对应格式的字符串 |
equals | 比较两个日期是否相等 |
其中,before和after方法可以通过源码得知,他们也是借由比较时间数值来得到结果的,可以自己翻阅源码的相关内容。
其余Date类还有很多方法,但是多数方法已经被废弃了,不建议使用,有兴趣的可以翻阅源码或者JDK手册了解。
- DateFormat类和SimpleDateFormat类
DateFormat类的作用:把事件对象转化为指定格式的字符串。反之,把指定格式的字符串转化为时间对象。他是一个抽象类,一般使用它的子类SimpleDateFormat类来实现。
构建格式化时间的字符遵循格式化字符的含义,他们的具体含义如下图:
通过如下的实例来了解他们的使用方法:
package konoha.commonClass.dateEtc;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ClassDateFormat {
public static void main(String[] args) throws ParseException {
//使用DateFormat抽象类的子类SimpleDateFormat格式化输出Date对象
DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date1 = new Date();
String str1 = df1.format(date1);
System.out.println(str1);
//使用DateFormat抽象类的子类SimpleDateFormat格式化解析字符串构造Date对象
DateFormat df2 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒");
Date date2 = df2.parse("2020年12月31日 20时32分45秒");
System.out.println(date2);
//其他的一些使用方法
//使用"D"格式符获取当前是这一年的第多少天
DateFormat df3 = new SimpleDateFormat("D");
System.out.println(df3.format(new Date()));
}
}