使用 java.time 包中的 temporaladjusters.lastdayofmonth() 可以获取某月的最后一天。只需将目标日期传入 with() 方法并应用该调整器,即可得到结果。

LocalDate 如何直接获取当月最后一天
对于当前日期的场景,可以直接调用 LocalDate.now() 获取今天,然后使用 with(TemporalAdjusters.lastDayOfMonth()) 进行调整。这种方法不需要手动计算月份天数,API 会自动处理闰年等复杂情况。

import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;
public class Main {
public static void main(String[] args) {
// 获取当前日期
LocalDate today = LocalDate.now();
// 获取当月最后一天
LocalDate lastDay = today.with(TemporalAdjusters.lastDayOfMonth());
System.out.println("Today: " + today);
System.out.println("Last Day: " + lastDay);
}
}指定年份和月份时如何获取最后一天
当需要获取特定年份和月份的最后一天时,可以先构建一个 LocalDate 对象,例如使用 LocalDate.of(year, month, 1) 创建该月第一天的实例,再应用相同的调整器。这样即使输入的日期不是第一天,调整器也会将其映射到该月的最后一天。
立即学习“Java免费学习笔记(深入)”;

import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;
public class Main {
public static void main(String[] args) {
// 指定2024年2月(闰年)
LocalDate date = LocalDate.of(2024, 2, 1);
LocalDate lastDay = date.with(TemporalAdjusters.lastDayOfMonth());
System.out.println("Last Day of Feb 2024: " + lastDay); // 输出 2024-02-29
// 指定2023年2月(平年)
LocalDate date2 = LocalDate.of(2023, 2, 15);
LocalDate lastDay2 = date2.with(TemporalAdjusters.lastDayOfMonth());
System.out.println("Last Day of Feb 2023: " + lastDay2); // 输出 2023-02-28
}
}如果输入的是 YearMonth 类型该如何获取最后一天
YearMonth 类本身提供了 lengthOfMonth() 方法来获取该月的天数,但若要获得完整的 LocalDate 类型的最后一天,可以使用 atEndOfMonth() 方法。这是最简洁的方式,直接返回该 YearMonth 对应的最后一天的 LocalDate。
import java.time.YearMonth;
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
YearMonth ym = YearMonth.of(2024, 2);
LocalDate lastDay = ym.atEndOfMonth();
System.out.println("Last Day: " + lastDay); // 输出 2024-02-29
}
}


















