首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 基礎:java.util.Date 類核心用法 — 創建、時間戳轉換、比較操作

     編輯:Java 綜合教學

Java 基礎:java.util.Date 類核心用法 — 創建、時間戳轉換、比較操作

java.util.Date 表示特定瞬間,精確到毫秒。雖然 JDK 8+ 推薦使用 java.time.Instant/LocalDateTime,但 Date 仍廣泛存在於存量代碼、JDBC、第三方庫交互中,掌握其核心 API 必不可少。

構造方法

// 1. 當前時間
Date date = new Date(); // 精確到毫秒

// 2. 指定毫秒時間戳 (自 1970-01-01 00:00:00 UTC)
long timestamp = System.currentTimeMillis();
Date date2 = new Date(timestamp);

日期 ↔ 毫秒值轉換

// Date → long (時間戳)
long ts = date.getTime(); // 等價 date.getTime()

// long → Date
date.setTime(ts); // 修改現有對象時間
// 或 new Date(ts) 創建新對象

日期比較操作

Date d1 = new Date(1000);  // 1970-01-01 00:00:01
Date d2 = new Date(2000);  // 1970-01-01 00:00:02

// 1. before/after
boolean before = d1.before(d2); // true
boolean after = d1.after(d2);   // false

// 2. compareTo (實現 Comparable)
int cmp = d1.compareTo(d2); // -1 (d1 < d2)
/* 返回值:
   0  : 相等
   <0 : 此日期在參數日期之前
   >0 : 此日期在參數日期之後 */

常用模式總結

需求代碼
獲取當前時間戳System.currentTimeMillis() 或 new Date().getTime()
判斷日期先後date1.before(date2) / date1.compareTo(date2) < 0
日期加減運算new Date(date.getTime() + 24*3600*1000) (建議用 Calendar/LocalDateTime)
格式化輸出SimpleDateFormat.format(date) (詳見下篇)

注意事項

  • 可變性:Date 內部 fastTime 可通過 setTime() 修改,非線程安全,多線程環境勿共享實例。
  • 時區:toString() 默認使用 JVM 默認時區 (如 CST),不攜帶時區信息。
  • 精度:毫秒級,納秒需用 System.nanoTime() 或 Instant。
  • 棄用方法:構造函數 Date(year, month, date)、getYear()、getMonth() 等均已棄用,請用 Calendar 或 java.time。
  • JDBC 交互:java.sql.Date/Time/Timestamp 繼承自 java.util.Date,可直接 setTimestamp/getTimestamp。

遷移建議:JDK 8+ java.time 包

// 當前瞬間
Instant now = Instant.now();           // UTC 時區
long epochMilli = now.toEpochMilli();  // 毫秒時間戳

// 本地日期時間 (無時區)
LocalDateTime ldt = LocalDateTime.now(); // 系統默認時區
LocalDate date = LocalDate.now();
LocalTime time = LocalTime.now();

// 格式化 (線程安全)
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String str = ldt.format(fmt);
LocalDateTime parsed = LocalDateTime.parse(str, fmt);
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved