Java 常用類庫之 Date、DateFormat和Calendar
阿新 • • 發佈:2021-09-04
1 Date
Data
類用於建立一個關於特定時刻(精度為毫秒)的物件。在 JDK 1.1 之前Date
類包含了解釋日期為年月日時分秒的功能,以及格式化和解析日期字串的功能。但由於這些功能的 API 不適合國際化,它們在 JDK 1.1 之後被棄用,現在應該使用Calendar
類在日期和時間欄位之間進行轉換,使用DateFormat
類進行格式化和解析日期字串。
-
建立一個
Date
物件有兩種方式:// 建立當前時間的 Date 物件 Date t = new Date(); // 建立指定時間的 Date 物件,指定時間為相對於 1970.01.01 00:00:00 GMT 的毫秒數 Date t2 = new Date(1630570007479L);
-
設定和獲取
Date
物件時間long time = t.getTime(); // 獲取 t 所表示的時間 t.setTime(1530570007479L); // 設定 t 所表示的時間
-
判斷時間先後
boolean isBefore = t.before(t2); boolean isAfter = t.after(t2);
Date
實現了Comparable
,因此可以通過呼叫compareTo()
比較兩個Date
物件。t.compareTo(t2); // 返回複數表示 t 先於 t2,0 表示兩者同時(毫秒級),正數表示 t 後於 t2
-
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
-
與
Instance
物件之間的轉換// 將 Date 物件 t 轉換得到一個表示相同時間點的 Instant 物件 Instant ins = t.toInstant(); // from() 是靜態方法,用於從 Instant 物件轉換得到一個 Date 物件 Date t3 = Date.from(ins);
2 DateFormat
DataFormat
是一個抽象類,用於通過與語言無關的方式對日期或時間進行格式化和解析。它的可例項化子類是SimpleDateFormat
-
例項化的幾種方式
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;