一、LocalDateTime API
LocalDateTime 表示日期和时间(精确到秒),不包含时区信息。
1.创建实例的方法
- now(): 获取当前日期时间。
LocalDateTime.now();
- of(int year, int month, int dayOfMonth, int hour, int minute): 指定年月日时分创建实例。
LocalDateTime.of(2024, 10, 23, 12, 30);
- parse(CharSequence text): 将字符串解析为 LocalDateTime.
LocalDateTime.parse("2024-10-23T12:30");
2.获取日期时间属性的方法
- getYear(): 获取年份。
- getMonth(): 获取月份(返回 Month 枚举)。
- getMonthValue(): 获取月份(1-12)。
- getDayOfMonth(): 获取当月的天数。
- getDayOfWeek(): 获取星期几。
- getDayOfYear(): 获取当年的天数。
- getHour(): 获取小时。
- getMinute(): 获取分钟。
- getSecond(): 获取秒数。
- getNano(): 获取纳秒数。
3.日期时间运算方法
- plusYears(long yearsToAdd): 增加年份。
- plusMonths(long monthsToAdd): 增加月份。
- plusDays(long daysToAdd): 增加天数。
- plusHours(long hoursToAdd): 增加小时。
- plusMinutes(long minutesToAdd): 增加分钟。
- minusWeeks(long weeksToSubtract): 减少星期数。
4.日期时间比较方法
- isBefore(LocalDateTime other): 判断是否在另一个日期时间之前。
- isAfter(LocalDateTime other): 判断是否在另一个日期时间之后。
- isEqual(LocalDateTime other): 判断是否相同。
5.其他常用方法
format(DateTimeFormatter formatter): 格式化日期时间。
atZone(ZoneId zone): 将 LocalDateTime 转换为 ZonedDateTime。
toLocalDate(): 获取日期部分。
toLocalTime(): 获取时间部分。
二、LocalDate API
LocalDate 表示不带时间的日期。
1.创建实例的方法
- now(): 获取当前日期。
LocalDate.now();
- of(int year, int month, int dayOfMonth): 指定年月日创建实例。
LocalDate.of(2024, 10, 23);
- parse(CharSequence text): 将字符串解析为 LocalDate。
LocalDate.parse("2024-10-23");
2.获取日期属性的方法
- getYear(): 获取年份。
- getMonth(): 获取月份(返回 Month 枚举)。
- getMonthValue(): 获取月份(1-12)。
- getDayOfMonth(): 获取当月的天数。
- getDayOfWeek(): 获取星期几。
- getDayOfYear(): 获取当年的天数。
- lengthOfMonth(): 获取当月的天数。
- lengthOfYear(): 获取当年的天数。
3.日期运算方法
- plusYears(long yearsToAdd): 增加年份。
- plusMonths(long monthsToAdd): 增加月份。
- plusDays(long daysToAdd): 增加天数。
- minusYears(long yearsToSubtract): 减少年份。
- minusMonths(long monthsToSubtract): 减少月份。
4.日期比较方法
- isBefore(LocalDate other): 判断是否在另一个日期之前。
- isAfter(LocalDate other): 判断是否在另一个日期之后。
- isEqual(LocalDate other): 判断是否相同。
5.其他常用方法
- format(DateTimeFormatter formatter): 格式化日期。
- atStartOfDay(): 将 LocalDate 转换为当天的 LocalDateTime。
- withDayOfMonth(int dayOfMonth): 修改当月的天数。
- withMonth(int month): 修改月份。
三、延伸方法
获取一年的第一天
LocalDate firstDayOfYear = LocalDate.now().withDayOfYear(1);
获取一年的最后一天
LocalDate lastDayOfYear = LocalDate.now().withDayOfYear(LocalDate.now().lengthOfYear());
获取一个月的第一天
LocalDate firstDayOfMonth = LocalDate.now().withDayOfMonth(1);
获取一个月的最后一天
LocalDate lastDayOfMonth = LocalDate.now().withDayOfMonth(LocalDate.now().lengthOfMonth());
获取下一个星期一的日期
LocalDate nextMonday = LocalDate.now().with(TemporalAdjusters.next(DayOfWeek.MONDAY));
获取当前日期所在星期的周一
LocalDate currentWeekMonday = LocalDate.now().with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
获取当前日期所在星期的周日
LocalDate currentWeekSunday = LocalDate.now().with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
获取下一个月的第一天
LocalDate firstDayOfNextMonth = LocalDate.now().plusMonths(1).withDayOfMonth(1);
获取下一个月的最后一天
LocalDate lastDayOfNextMonth = LocalDate.now().plusMonths(1).withDayOfMonth(LocalDate.now().plusMonths(1).lengthOfMonth());
获取下一个季度的第一天
LocalDate now = LocalDate.now();
int currentQuarter = (now.getMonthValue() - 1) / 3 + 1;
LocalDate firstDayOfNextQuarter = now.withMonth((currentQuarter * 3) % 12 + 1).withDayOfMonth(1);
评论区