Day022 JDK8之前的日期时间

1.JDK8之前日期时间API


java.lang.System类


​ System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。

  • 此方法适于计算时间差。

  • 计算世界时间的主要标准有:
    • UTC(Coordinated Universal Time)
    • GMT(Greenwich Mean Time)
    • CST(Central Standard Time)
 //currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。
 long time = System.currentTimeMillis();
 System.out.println(time);

输出结果

1621664822106

这个数称为时间戳。


java.util.Date类

​ 表示特定的瞬间,精确到毫秒


  • 构造器:

    • Date(): 使用无参构造器创建的对象可以获取本地当前时间。
    • Date(long date)
  • 常用方法

    • getTime():返回自1970年1月1日 00:00:00 GMT以来此Date对象表示的毫秒数。
    • toString():把此Date对象转换为以下形式的String: dow mon dd hh:mm:ss zzz yyyy 其中:dow是一周中的某一天(Sun,Mon,Tue,Wed,Thu,Fri,Sat),zzz是时间标准。
    • 其它很多方法都过时了。
import java.util.Date;

public static void main(String[] args) {
        Date date1 = new Date();
        System.out.println(date1.toString());

        System.out.println(date1.getTime());

        Date date2 = new Date(1621666072062L);

        System.out.println(date2);
    }

输出结果:

Sat May 22 15:07:18 CST 2021
1621667238491
Sat May 22 14:47:52 CST 2021

java.sql.Date类(java.util.Date类的子类)

package java.sql;

public class Date extends java.util.Date
  • 构造器:

    • Date(long date)
  • 常用方法

    • getTime():返回自1970年1月1日 00:00:00 GMT以来此Date对象表示的毫秒数。
    • toString(): 返回yyyy-MM-dd格式的时间
import java.sql.Date;

public static void main(String[] args) {
        Date date1 = new Date(1621667238491L);
        System.out.println(date1.toString());
        System.out.println(date1.getTime());
    }

输出结果

2021-05-22
1621667238491

java.sql.Date与java.util.Date之间的转换


情况1(new 的是java.sql.Date):

java.util.Date date2 = new java.sql.Date(1621667238491L);
java.sql.Date date3=(java.sql.Date) date2;

分析:由于java.util.Date是java.sql.Date的父类,所以java.sql.Date转换为java.util.Date可以自动转化,父类引用指向子类对象。而java.util.Date转换为java.sql.Date需要强制类型转换。


情况2(new 的是java.util.Date):

java.util.Date date4=new java.util.Date();
Long time4=date4.getTime();//时间戳
java.sql.Date date5=new Date(time4);

分析:由于new的是父类,所以不能强制转换为子类。正确的做法是获取util.Date对应的时间戳,再用sql.Date的构造方法构造sql.Date对象。

尚硅谷

posted @ 2021-05-22 15:55  南方风  阅读(58)  评论(0编辑  收藏  举报