錯誤現象
import java.sql.Date;
Date d1 = new Date(); // 報錯:The constructor Date() is undefined
Date d2 = new Date("114020303034L"); // 傳字符串構造
根本原因
- 導入包錯誤:
java.sql.Date 無無參構造函數,也無字符串構造函數。應導入 java.util.Date。
- 構造函數過時:
java.util.Date(String) 自 JDK 1.1 起已過時,不建議使用。
正確用法
import java.util.Date;
public class Demo {
public static void main(String[] args) {
// 無參構造:當前時間
Date d1 = new Date();
System.out.println(d1);
// 帶長整型毫秒數構造
Date d2 = new Date(114020303034L);
System.out.println(d2);
// 現代推薦:java.time 包 (JDK 8+)
// LocalDateTime.now(), Instant.ofEpochMilli(...)
}
}
避坑指南
- 區分
java.sql.Date(JDBC 用)與 java.util.Date(通用)。
- 新項目優先使用
java.time.LocalDateTime、Instant 等不可變、線程安全的 API。
- 解析字符串日期請用
DateTimeFormatter。