Date
特点
- java.time.Date是Java早期的日期类,包含日期和时间
- 存在设计缺陷,列入非线程安全,与java.sql.Date混淆
- 不推荐使用
LocalDate
特点
- 表示没有时间的日期,例如:2024-07-19。
- 不包含时区信息。
- 常用于表示生日、假期、年度纪念日等不需要时间的场景
常用方法
LocalDate now = LocalDate.now(); // 当前日期
LocalDate specificDate = LocalDate.of(2024, 7, 19); // 特定日期
LocalDate parsedDate = LocalDate.parse("2024-07-19"); // 从字符串解析
int year = specificDate.getYear(); // 获取年份
Month month = specificDate.getMonth(); // 获取月份
int dayOfMonth = specificDate.getDayOfMonth(); // 获取月份中的第几天
DayOfWeek dayOfWeek = specificDate.getDayOfWeek(); // 获取星期几
int dayOfYear = specificDate.getDayOfYear(); // 获取年份中的第几天
LocalDate tomorrow = specificDate.plusDays(1); // 增加一天
LocalDate nextMonth = specificDate.plusMonths(1); // 增加一个月
LocalDate nextYear = specificDate.plusYears(1); // 增加一年
LocalDate previousWeek = specificDate.minusWeeks(1); // 减少一周
boolean isLeapYear = specificDate.isLeapYear(); // 是否是闰年
boolean isAfter = specificDate.isAfter(LocalDate.now()); // 是否在当前日期之后
boolean isBefore = specificDate.isBefore(LocalDate.now()); // 是否在当前日期之前
LocalTime
特点
- 表示一天中的时间,例如:14:30:15。
- 不包含日期和时区信息。
- 常用于表示每天的固定时间,例如会议时间、闹钟时间等。
常用方法
LocalTime now = LocalTime.now(); // 当前时间
LocalTime specificTime = LocalTime.of(14, 30); // 特定时间
LocalTime parsedTime = LocalTime.parse("14:30"); // 从字符串解析
int hour = specificTime.getHour(); // 获取小时
int minute = specificTime.getMinute(); // 获取分钟
int second = specificTime.getSecond(); // 获取秒
int nano = specificTime.getNano(); // 获取纳秒
LocalTime plusHours = specificTime.plusHours(1); // 增加一小时
LocalTime plusMinutes = specificTime.plusMinutes(30); // 增加三十分钟
LocalTime minusSeconds = specificTime.minusSeconds(15); // 减少十五秒
boolean isBefore = specificTime.isBefore(LocalTime.NOON); // 是否在中午之前
boolean isAfter = specificTime.isAfter(LocalTime.NOON); // 是否在中午之后
LocalDateTime
- 示日期和时间,例如:2024-07-19T14:30:15。
- 不包含时区信息。
- 常用于表示需要具体日期和时间的场景,例如会议预约、航班起飞时间等。
常用方法
LocalDateTime now = LocalDateTime.now(); // 当前日期和时间
LocalDateTime specificDateTime = LocalDateTime.of(2024, 7, 19, 14, 30); // 特定日期和时间
LocalDateTime parsedDateTime = LocalDateTime.parse("2024-07-19T14:30"); // 从字符串解析
int year = specificDateTime.getYear(); // 获取年份
Month month = specificDateTime.getMonth(); // 获取月份
int dayOfMonth = specificDateTime.getDayOfMonth(); // 获取月份中的第几天
DayOfWeek dayOfWeek = specificDateTime.getDayOfWeek(); // 获取星期几
int hour = specificDateTime.getHour(); // 获取小时
int minute = specificDateTime.getMinute(); // 获取分钟
int second = specificDateTime.getSecond(); // 获取秒
LocalDateTime tomorrowSameTime = specificDateTime.plusDays(1); // 增加一天
LocalDateTime nextMonthSameTime = specificDateTime.plusMonths(1); // 增加一个月
LocalDateTime nextYearSameTime = specificDateTime.plusYears(1); // 增加一年
LocalDateTime plusHours = specificDateTime.plusHours(1); // 增加一小时
LocalDateTime plusMinutes = specificDateTime.plusMinutes(30); // 增加三十分钟
LocalDateTime minusSeconds = specificDateTime.minusSeconds(15); // 减少十五秒
LocalDate datePart = specificDateTime.toLocalDate(); // 提取日期部分
LocalTime timePart = specificDateTime.toLocalTime(); // 提取时间部分
boolean isAfter = specificDateTime.isAfter(LocalDateTime.now()); // 是否在当前日期和时间之后
boolean isBefore = specificDateTime.isBefore(LocalDateTime.now()); // 是否在当前日期和时间之前