Date日期类
Date类的对象表示一个特定的时刻瞬间,精确到毫秒,更具体一点来说,Date类的对象中是通过存储一个long类型的时间戳进而来存储时间的。
Date类中有重写的toString方法,直接打印Date对象会获取当前时间,格式是:星期 月份 日 hh:mm:ss 时区缩写 年份
// 创建当前日期对象
Date date = new Date();
System.out.println(date);
// Fri Apr 12 21:30:43 CST 2024 中国的时区缩写是CST(China Standard Time)
时间戳
时间戳本身是一个比较复杂的概念,而Java语言当中所使用的时间戳主要是指Unix时间戳,它的涵义是:
从格林威治时间(GMT时间,世界时的起点)1970年01月01日00时00分00秒(北京时间是1970年01月01日08时00分00秒)到现在的秒数(毫秒数)。
Date类中的成员变量
在Java中存储的时间戳是一个long类型的毫秒数,即Date类当中的成员变量:
private transient long fastTime;
Date类中的构造方法(用来创建Date对象)
我们来看一下Date类目前还能够使用的,没有过时的两个构造方法:
// Date() 该构造函数使用当前日期和时间来创建对象
Date date = new Date();
// Date(long date) 使用一个时间戳来创建对应时间的日期对象
long time2 = 1712821406000L;
Date date1 = new Date(time2);
该类的构造器源码如下:
public Date() {
this(System.currentTimeMillis());
}
public Date(long date) {
fastTime = date;
}
所以实际上,Date类只有一个构造器,那就是给fastTime成员变量赋值的构造器。
无参构造器当中使用了以下代码来获取一个毫秒值:
System.currentTimeMillis()
这个方法是一个本地方法,该方法会根据操作系统时间来获取当前的时间戳。
Date类中的成员方法
Date类的成员方法也大多过时了,需要大家了解的成员方法只有两个:
-
用一个时间戳来设置此Date对象:void setTime(long time)
date.setTime(0);
System.out.println(date);
// Thu Jan 01 08:00:00 CST 1970 格林威治时间1970 年 1 月 1 日 00:00:00是中国的1970 年 1 月 1 日 08:00:00 -
获取当前Date对象的时间戳的毫秒值:long getTime()
long time = date.getTime();
System.out.println(time);
// 1712928734333