过时的Date类还用学吗?

304 阅读3分钟

「这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战

前言

 大家好,我是程序猿小白 GW_gw,很高兴能和大家一起学习进步。

以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。

摘要

 本文主要介绍Date类的具体使用,以及实例应用。

1. Date类

1.1 Date类的作用

首先要明白Date类的主要作用。

官方的解释:类 Date 表示特定的瞬间,精确到毫秒。

根据我的理解总结为以下两点。

  1. 使用Date类来获取当前时间。
  2. 使用Date类构造时间,定位到需要的时间。

1.2 Date类的构造函数

Date类位于java.util包下。

仍未过时的Date类的构造方法有两个。

1.2.1 Date()

date() 分配并初始化Date对象,以便它表示分配它的时间,以最近的毫秒为度量单位。

来看一下源码:

 public Date() {
     this(System.currentTimeMillis());
 }

调用了System.currentTimeMillis()方法来获取系统时间,所以你获得的时间取决于你的Java虚拟机的环境。也就是说,你的电脑显示的时间是多少,你的Date对象表示的时间就是多少。

我们打印输出来看一下。

image-20211115153544447

这是格林威治标准时间。我们看着确实不太舒服,所以我们可以来根据我们需要的格式来解析这个时间,这个以后再说,这里需要关注的就是,实际时间就是我们的计算机的实际时间。

1.2.2 Date(long date)

Date(long date) 分配并初始化Date对象,表示自从1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数,即距离该标准时间的date毫秒时间。

源码:

 public Date(long date) {
         fastTime = date;
 }

来打印输出看一下。

image-20211115215104480

image-20211115215027523

可以看到1000毫秒也就是1秒,距离标准时间1秒时间是多少。是不是感觉这个构造方法没什么用?只能说我们还没应用到该场景的时候。要不开发人员也不会提供这个类了,这里就先了解。

1.3 Date类的方法

Date类的方法这里就只介绍getTime()方法:返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

来看源码:

 public long getTime() {
     return getTimeImpl();
 }

调用getTime()方法实际上就是调用getTimeImpl()方法。那getTimeImpl()方法是干什么的?

来看源码:

 private final long getTimeImpl() {
     if (cdate != null && !cdate.isNormalized()) {
         normalize();
     }
     return fastTime;
 }

返回fastTime,fastTime就是表示自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

1.4 Date类的应用实例

到目前为止,Date类的很多方法都已经过时了,最多的时候就是用来获取当前的系统时间。

我们可以利用这个方法来做一个定时器:

 Date d = new Date();
 long ms = d.getTime();
 long t = 10*60*1000;
 long time = t + ms;
 while(true){
     Date date = new Date();
     if(date.getTime()>time){
         System.out.println("已经过了十分钟了!!!");
         break;
     }
 }

快来试一下吧!

结语

以上就是我对于Date类的一些具体使用的浅见,即此分享,希望和读者共同进步。如有不正之处,欢迎留言指正。