LocalDate.lengthOfMonth()需先构造某年某月1号的LocalDate实例才能调用,如LocalDate.of(2024,2,1).lengthOfMonth()返回29;推荐用Month枚举提升可读性与类型安全,自动处理闰年和大小月。

LocalDate.lengthOfMonth() 方法本身不接受年份和月份参数,它属于一个具体日期实例的方法。所以要动态获取“某年某月”的天数,必须先构造出该年该月的任意一天(比如 1 号)的 LocalDate 对象,再调用 lengthOfMonth()。
核心思路:用 year、month 构造 LocalDate 实例
Java 的 LocalDate.of(year, month, day) 是最直接的方式。只要指定年份、月份和任意有效日(通常用 1),就能得到当月第一天的日期对象,随后调用 lengthOfMonth() 即可返回该月实际天数(自动处理闰年、大小月)。
- 例如:2024 年 2 月 → 构造
LocalDate.of(2024, 2, 1)→.lengthOfMonth()返回 29 - 例如:2023 年 2 月 → 构造
LocalDate.of(2023, 2, 1)→ 返回 28 - 月份可用
Month.FEBRUARY或数字(1–12),推荐用Month枚举提升可读性
代码示例(简洁安全)
以下方法接收年份和月份(int 或 Month),返回当月天数:
<font size="2">public static int getDaysInMonth(int year, int month) {<br> return LocalDate.of(year, month, 1).lengthOfMonth();<br>}<br><br>// 或使用 Month 枚举(更类型安全)<br>public static int getDaysInMonth(int year, Month month) {<br> return LocalDate.of(year, month, 1).lengthOfMonth();<br>}</font>
调用示例:getDaysInMonth(2024, 2) → 29getDaysInMonth(2024, Month.FEBRUARY) → 29
注意事项
- 传入的
month若为数字,必须是 1–12,否则抛DateTimeException - 不需要手动判断闰年或查表——
LocalDate内部已完整实现格里高利历规则 - 避免用
Calendar或字符串解析等旧方式,既冗余又易出错

















