localdate.isleapyear()方法根据公历规则判断年份是否为闰年:能被4整除但不能被100整除,或能被400整除;它作用于localdate实例,仅提取年份计算,不校验日期合法性,推荐仅需年份时使用year类的isleap()方法。

LocalDate.isLeapYear() 方法直接返回该日期所在年份是否为闰年,返回 true 表示是闰年,false 表示不是。
判断逻辑完全遵循公历闰年规则
Java 的 isLeapYear() 内部按标准公历规则计算:年份能被 4 整除但不能被 100 整除,或者能被 400 整除。例如:
- 2000 年 → 能被 400 整除 →
true - 1900 年 → 能被 100 整除但不能被 400 整除 →
false - 2024 年 → 能被 4 整除且不能被 100 整除 →
true - 2023 年 → 不能被 4 整除 →
false
用法非常简单,无需传参
它作用于 LocalDate 实例,自动取该实例的年份进行判断:
-
LocalDate.of(2024, 2, 29).isLeapYear()→true(2024 是闰年,2月29日合法) -
LocalDate.now().isLeapYear()→ 判断当前年份是否为闰年 -
LocalDate.parse("2025-06-15").isLeapYear()→false(2025 不是闰年)
注意:只看年份,和月份、日期无关
该方法不校验日期是否真实存在,只提取年份做判断。比如:
-
LocalDate.of(1900, 2, 29).isLeapYear()返回false(1900 不是闰年),但这段代码本身会抛出DateTimeException,因为 1900-02-29 是非法日期 —— 所以实际使用中,通常先有合法的LocalDate实例再调用此方法。 - 如果你只有年份(如
int year = 2024),可构造临时日期:LocalDate.of(year, 1, 1).isLeapYear()。
替代方案:Year 类更语义化
如果仅需判断某年是否闰年,推荐用 Year 类,更直观:
-
Year.of(2000).isLeap()→true -
Year.now().isLeap()→ 判断当前年 - 它和
LocalDate.isLeapYear()底层逻辑一致,但意图更清晰。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











