java.util.Date 自 JDK 1.0 起演進,早期僅提供取得/設定年月日方法,現已棄用並移至 Calendar。JDK 1.1 起,Date 成為長整數包裝類,封裝自 GMT 1970-01-01 00:00:00 起經過的毫秒數,以更好支援國際化格式。
import java.util.Date;
public class DateExample1 {
public static void main(String[] args) {
Date date = new Date(); // 使用系統當前時間
System.out.println(date.getTime()); // 輸出毫秒數
}
}
無參建構子內部呼叫 System.currentTimeMillis()。範例輸出如 1001803809710 (對應 2001-09-29 18:50)。
使用 java.text.SimpleDateFormat 及其父類 DateFormat:
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateExample2 {
public static void main(String[] args) {
SimpleDateFormat fmt = new SimpleDateFormat("EEEE-MMMM-dd-yyyy");
Date date = new Date();
System.out.println(fmt.format(date)); // 輸出:星期六-九月-29-2001
}
}
格式字串對照:EEEE=完整星期名、MMMM=完整月份名、dd=兩位數日期、yyyy=四位數年份。字元個數決定輸出長度(如 EE 輸出「週六」)。
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateExample3 {
public static void main(String[] args) {
SimpleDateFormat fmt = new SimpleDateFormat("MM-dd-yyyy");
String str = "9-29-2001";
try {
Date date = fmt.parse(str);
System.out.println(date.getTime()); // 輸出:1001736000000
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
}
parse() 可能拋出 ParseException,需置於 try-catch 中。
DateFormat.getDateTimeInstance(int dateStyle, int timeStyle) 提供四種內建風格常數:
| 常數 | 日期範例 | 時間範例 |
|---|---|---|
| SHORT | 9/29/01 | 8:44 PM |
| MEDIUM | Sep 29, 2001 | 8:44:45 PM |
| LONG | September 29, 2001 | 8:44:45 PM EDT |
| FULL | Saturday, September 29, 2001 | 8:44:45 PM EDT |
import java.text.DateFormat;
import java.util.Date;
public class DateExample4 {
public static void main(String[] args) {
Date date = new Date();
DateFormat shortFmt = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
DateFormat medFmt = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);
DateFormat longFmt = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
DateFormat fullFmt = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
System.out.println(shortFmt.format(date));
System.out.println(medFmt.format(date));
System.out.println(longFmt.format(date));
System.out.println(fullFmt.format(date));
}
}
輸出範例:
9/29/01 8:44 PM
Sep 29, 2001 8:44:45 PM
September 29, 2001 8:44:45 PM EDT
Saturday, September 29, 2001 8:44:45 PM EDT
兩個參數分別控制日期與時間風格,均為 int,建議使用 DateFormat 常數以提升可讀性。