java.util.Date 表示精確到毫秒的時間瞬間。JDK 1.1 前承擔日期計算、格式化職責,後因國際化不足被 Calendar、DateFormat 取代,大部分方法已棄用。現僅作為時間戳載體與歷史 API 兼容。
| 構造函數 | 參數說明 | 示例 |
|---|---|---|
Date(int year, int month, int day) | year-1900, month 0-11, day 1-31 | new Date(88,7,8) → 1988-08-08 |
Date(int y, int m, int d, int h, int min) | + hour 0-23, min 0-59 | new Date(99,8,9,19,19) → 1999-09-09 19:19 |
Date(int y, int m, int d, int h, int min, int s) | + sec 0-59 | new Date(100,10,10,20,10,10) → 2000-11-10 20:10:10 |
Date(long millis) | 毫秒數 = 目標時間 - 1970-01-01 00:00:00 GMT | new Date(973858210000L) |
Date(String s) | 解析 RFC 格式字符串 | new Date("Sat, 12 Aug 95 13:30:00 GMT") |
關鍵坑點:year = 實際年份 - 1900;month 0=一月;weekday 1=周日。
// Date → Calendar
Calendar cal = Calendar.getInstance();
cal.setTime(date);
// Calendar → Date
Date date = cal.getTime();
getYear()、getMonth()、getDate()、getHours()、getMinutes()、getSeconds()、getDay() (星期)getTime() 獲取毫秒時間戳 唯一推薦保留getTimezoneOffset() 本地時區與 UTC 差 (分鐘)setYear()、setMonth()、setDate()、setHours()、setMinutes()、setSeconds()setTime(long millis) 設置時間戳 唯一推薦保留UTC(int y, m, d, h, min, s) 靜態方法返回 GMT 時間戳parse(String) 靜態解析返回時間戳after/before/compareTo/equals 比較clone()、toString()、toGMTString()、toLocaleString()Date date = new Date(113, 8, 19, 14, 22, 30); // 2013-09-19 14:22:30
// 讀取
System.out.println("Year: " + (date.getYear() + 1900));
System.out.println("Month: " + (date.getMonth() + 1));
System.out.println("Day: " + date.getDate());
System.out.println("Hour: " + date.getHours());
System.out.println("Millis: " + date.getTime());
// 修改
date.setYear(123); // 2023
date.setMonth(0); // 一月
date.setDate(1);
date.setHours(0);
date.setMinutes(0);
date.setSeconds(0);


TimeZone 內嵌 IANA 數據庫自動處理Date 是時間戳容器,核心只用 getTime()/setTime()。日期計算、格式化、國際化請遷移至 Calendar/DateFormat/java.time。理解 GMT/UTC/時區/DST 關係是處理全球化時間業務的基石。