## Java Date 类常用方法表 (`java.util.Date`) 注意:`java.util.Date` 类的大部分方法已过时(deprecated),推荐使用 `java.time` 包下的现代日期时间 API(如 `LocalDate`, `LocalDateTime` 等)。以下为维护旧代码整理的常用方法: | **方法名** | **参数** | **返回类型** | **功能描述** | **示例** | **是否过时** | | ----------------------------- | ----------------------------- | ------------ | --------------------------------- | ------------------------------ | ------------ | | **构造方法** | | | | | | | `Date()` | - | Date | 创建表示当前时间的 Date 对象 | `new Date()` | 否 | | `Date(long date)` | `long date`: 毫秒时间戳 | Date | 根据时间戳创建 Date 对象 | `new Date(1654000000000L)` | 否 | | **时间操作** | | | | | | | `getTime()` | - | `long` | 获取毫秒时间戳(UTC, 1970.1.1起) | `date.getTime()` | 否 | | `setTime(long time)` | `long time`: 毫秒时间戳 | `void` | 设置时间 | `date.setTime(1654000000000L)` | 否 | | **比较方法** | | | | | | | `after(Date when)` | `Date when`: 比较日期 | `boolean` | 是否在指定日期之后 | `date1.after(date2)` | 否 | | `before(Date when)` | `Date when`: 比较日期 | `boolean` | 是否在指定日期之前 | `date1.before(date2)` | 否 | | `equals(Object obj)` | `Object obj`: 比较对象 | `boolean` | 时间值是否相等 | `date1.equals(date2)` | 否 | | `compareTo(Date anotherDate)` | `Date anotherDate`: 比较日期 | `int` | 时间先后比较(负值/0/正值) | `date1.compareTo(date2)` | 否 | | **过时方法** ⚠️ | | | **仅用于旧系统维护** | | | | `getYear()` | - | `int` | 获取年份(实际值=返回值+1900) | `date.getYear()` + 1900 | 是 | | `setYear(int year)` | `int year`: 年份(year-1900) | `void` | 设置年份 | `date.setYear(122)` // 2022 | 是 | | `getMonth()` | - | `int` | 获取月份(0-11, 0=1月) | `date.getMonth()` + 1 | 是 | | `setMonth(int month)` | `int month`: 月份(0-11) | `void` | 设置月份 | `date.setMonth(11)` // 12月 | 是 | | `getDate()` | - | `int` | 获取月份中的日(1-31) | `date.getDate()` | 是 | | `setDate(int date)` | `int date`: 日期(1-31) | `void` | 设置月份中的日 | `date.setDate(25)` | 是 | | `getHours()` | - | `int` | 获取小时(0-23) | `date.getHours()` | 是 | | `setHours(int hours)` | `int hours`: 小时(0-23) | `void` | 设置小时 | `date.setHours(15)` | 是 | | `getMinutes()` | - | `int` | 获取分钟(0-59) | `date.getMinutes()` | 是 | | `setMinutes(int minutes)` | `int minutes`: 分钟(0-59) | `void` | 设置分钟 | `date.setMinutes(30)` | 是 | | `getSeconds()` | - | `int` | 获取秒数(0-59) | `date.getSeconds()` | 是 | | `setSeconds(int seconds)` | `int seconds`: 秒数(0-59) | `void` | 设置秒数 | `date.setSeconds(45)` | 是 | | `toString()` | - | `String` | 转换为字符串格式 | `date.toString()` | 否 | ## ⚠️ 重要说明 #### 1、**过时方法替代方案**(Java 8+ 推荐): ```java // 现代日期时间 API (java.time) Instant instant = date.toInstant(); ZonedDateTime zdt = instant.atZone(ZoneId.systemDefault()); // 获取年月日 int year = zdt.getYear(); int month = zdt.getMonthValue(); // 1-12 int day = zdt.getDayOfMonth(); // 获取时分秒 int hour = zdt.getHour(); int minute = zdt.getMinute(); int second = zdt.getSecond(); ``` #### 2、**格式化日期**: ```java // 使用 SimpleDateFormat (旧API) SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String formatted = sdf.format(date); // 现代替代方案 (DateTimeFormatter) DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String modernFormatted = zdt.format(dtf); ``` #### 3、**最佳实践**: - 新项目使用 `java.time` 包 (`LocalDateTime`, `ZonedDateTime`等) - 与数据库交互使用 `java.sql.Date`/`Timestamp` - 时间戳统一用 `long` 或 `Instant` - 避免使用 `Date` 的过时方法 Loading... ## Java Date 类常用方法表 (`java.util.Date`) 注意:`java.util.Date` 类的大部分方法已过时(deprecated),推荐使用 `java.time` 包下的现代日期时间 API(如 `LocalDate`, `LocalDateTime` 等)。以下为维护旧代码整理的常用方法: | **方法名** | **参数** | **返回类型** | **功能描述** | **示例** | **是否过时** | | ----------------------------- | ----------------------------- | ------------ | --------------------------------- | ------------------------------ | ------------ | | **构造方法** | | | | | | | `Date()` | - | Date | 创建表示当前时间的 Date 对象 | `new Date()` | 否 | | `Date(long date)` | `long date`: 毫秒时间戳 | Date | 根据时间戳创建 Date 对象 | `new Date(1654000000000L)` | 否 | | **时间操作** | | | | | | | `getTime()` | - | `long` | 获取毫秒时间戳(UTC, 1970.1.1起) | `date.getTime()` | 否 | | `setTime(long time)` | `long time`: 毫秒时间戳 | `void` | 设置时间 | `date.setTime(1654000000000L)` | 否 | | **比较方法** | | | | | | | `after(Date when)` | `Date when`: 比较日期 | `boolean` | 是否在指定日期之后 | `date1.after(date2)` | 否 | | `before(Date when)` | `Date when`: 比较日期 | `boolean` | 是否在指定日期之前 | `date1.before(date2)` | 否 | | `equals(Object obj)` | `Object obj`: 比较对象 | `boolean` | 时间值是否相等 | `date1.equals(date2)` | 否 | | `compareTo(Date anotherDate)` | `Date anotherDate`: 比较日期 | `int` | 时间先后比较(负值/0/正值) | `date1.compareTo(date2)` | 否 | | **过时方法** ⚠️ | | | **仅用于旧系统维护** | | | | `getYear()` | - | `int` | 获取年份(实际值=返回值+1900) | `date.getYear()` + 1900 | 是 | | `setYear(int year)` | `int year`: 年份(year-1900) | `void` | 设置年份 | `date.setYear(122)` // 2022 | 是 | | `getMonth()` | - | `int` | 获取月份(0-11, 0=1月) | `date.getMonth()` + 1 | 是 | | `setMonth(int month)` | `int month`: 月份(0-11) | `void` | 设置月份 | `date.setMonth(11)` // 12月 | 是 | | `getDate()` | - | `int` | 获取月份中的日(1-31) | `date.getDate()` | 是 | | `setDate(int date)` | `int date`: 日期(1-31) | `void` | 设置月份中的日 | `date.setDate(25)` | 是 | | `getHours()` | - | `int` | 获取小时(0-23) | `date.getHours()` | 是 | | `setHours(int hours)` | `int hours`: 小时(0-23) | `void` | 设置小时 | `date.setHours(15)` | 是 | | `getMinutes()` | - | `int` | 获取分钟(0-59) | `date.getMinutes()` | 是 | | `setMinutes(int minutes)` | `int minutes`: 分钟(0-59) | `void` | 设置分钟 | `date.setMinutes(30)` | 是 | | `getSeconds()` | - | `int` | 获取秒数(0-59) | `date.getSeconds()` | 是 | | `setSeconds(int seconds)` | `int seconds`: 秒数(0-59) | `void` | 设置秒数 | `date.setSeconds(45)` | 是 | | `toString()` | - | `String` | 转换为字符串格式 | `date.toString()` | 否 | ## ⚠️ 重要说明 #### 1、**过时方法替代方案**(Java 8+ 推荐): ```java // 现代日期时间 API (java.time) Instant instant = date.toInstant(); ZonedDateTime zdt = instant.atZone(ZoneId.systemDefault()); // 获取年月日 int year = zdt.getYear(); int month = zdt.getMonthValue(); // 1-12 int day = zdt.getDayOfMonth(); // 获取时分秒 int hour = zdt.getHour(); int minute = zdt.getMinute(); int second = zdt.getSecond(); ``` #### 2、**格式化日期**: ```java // 使用 SimpleDateFormat (旧API) SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String formatted = sdf.format(date); // 现代替代方案 (DateTimeFormatter) DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String modernFormatted = zdt.format(dtf); ``` #### 3、**最佳实践**: - 新项目使用 `java.time` 包 (`LocalDateTime`, `ZonedDateTime`等) - 与数据库交互使用 `java.sql.Date`/`Timestamp` - 时间戳统一用 `long` 或 `Instant` - 避免使用 `Date` 的过时方法 最后修改:2025 年 10 月 13 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 👆请简单粗暴地爱我。