1. 程式人生 > 其它 >Java 常用類庫之 Date、DateFormat和Calendar

Java 常用類庫之 Date、DateFormat和Calendar

1 Date

Data類用於建立一個關於特定時刻(精度為毫秒)的物件。在 JDK 1.1 之前Date類包含了解釋日期為年月日時分秒的功能,以及格式化和解析日期字串的功能。但由於這些功能的 API 不適合國際化,它們在 JDK 1.1 之後被棄用,現在應該使用Calendar類在日期和時間欄位之間進行轉換,使用DateFormat類進行格式化和解析日期字串。

  1. 建立一個Date物件有兩種方式:

    // 建立當前時間的 Date 物件
    Date t = new Date();
    // 建立指定時間的 Date 物件,指定時間為相對於 1970.01.01 00:00:00 GMT 的毫秒數
    Date t2 = new Date(1630570007479L);
    
  2. 設定和獲取Date物件時間

    long time = t.getTime(); // 獲取 t 所表示的時間
    t.setTime(1530570007479L); // 設定 t 所表示的時間
    
  3. 判斷時間先後

    boolean isBefore = t.before(t2);
    boolean isAfter = t.after(t2);
    

    Date實現了Comparable,因此可以通過呼叫compareTo()比較兩個Date物件。

    t.compareTo(t2); // 返回複數表示 t 先於 t2,0 表示兩者同時(毫秒級),正數表示 t 後於 t2
    
  4. toString()

    返回Date物件表示時間的日期時間格式,格式為EEE MMM dd HH:mm:ss zzz yyyy

    Date t2 = new Date(1630570007479L);
    System.out.println(t2);
    

    輸出為:

    Thu Sep 02 16:06:47 CST 2021
    
  5. Instance物件之間的轉換

    // 將 Date 物件 t 轉換得到一個表示相同時間點的 Instant 物件
    Instant ins = t.toInstant();
    // from() 是靜態方法,用於從 Instant 物件轉換得到一個 Date 物件
    Date t3 = Date.from(ins);
    

2 DateFormat

DataFormat是一個抽象類,用於通過與語言無關的方式對日期或時間進行格式化和解析。它的可例項化子類是SimpleDateFormat

  1. 例項化的幾種方式

    DateFormat df = DateFormat.getDateTimeInstance(); // 呼叫靜態方法 getDateTimeInstance 
    DateFormat df1 = DateFormat.getDateInstance(); // 呼叫靜態方法 getDateInstance
    DateFormat df2 = DateFormat.getTimeInstance(); // 呼叫靜態方法 getTimeInstance 
    DateFormat df3 = DateFormat.getInstance(); // 呼叫靜態方法 getInstance
    SimpleDateFormat sdf = new SimpleDateFormat(); // 直接建立 SimpleFormat 物件
    

    其中getDateTimeInstance()得到的DateFormat物件可以同時格式化和解析日期和時間,getDateInstance得到的DateFormat物件可以同時格式化和解析日期,getTimeInstance得到的DateFormat物件可以同時格式化和解析時間,它們都有無參、兩參和三參三種過載方法,

    // 無參方法使用預設的日期格式、時間格式和地區格式
    public static final DateFormat getDateTimeInstance() {}
    // 兩參方法需要指定日期格式和時間格式,使用預設的地區格式
    public static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle) {}
    // 三參方法需要指定日期格式、時間格式和地區格式
    public static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale) {}
    // 無參方法使用預設的日期格式和地區格式,沒有支援時間格式
    public static final DateFormat getDateInstance() {}
    // 一參方法需要指定日期格式,使用預設的地區格式,沒有支援時間格式
    public static final DateFormat getDateInstance(int style) {}
    // 兩參方法需要指定日期格式和地區格式,沒有支援時間格式
    public static final DateFormat getDateInstance(int style, Locale aLocale) {}
    // 無參方法使用預設的時間格式和地區格式,沒有支援日期格式
    public static final DateFormat getTimeInstance() {}
    // 一參方法需要指定時間格式,使用預設的地區格式,沒有支援日期格式
    public static final DateFormat getTimeInstance(int style) {}
    // 一參方法需要指定時間格式和地區格式,沒有支援日期格式
    public static final DateFormat getTimeInstance(int style, Locale aLocale) {}
    

    DateFormat類中定義了幾種用於指定日期或時間格式的常量:

    public static final int FULL = 0;
    public static final int LONG = 1;
    public static final int MEDIUM = 2;
    public static final int SHORT = 3;
    public static final int DEFAULT = MEDIUM;
    

3 Calendar