LocalDate.lengthOfYear()直接返回当前日期所在年份的天数(365或366),仅取决于年份是否为闰年,与月日无关;其逻辑等价于isLeapYear()判断,但返回int型天数。

LocalDate.lengthOfYear() 方法直接返回当前日期所在年份的总天数,无需额外参数,结果是 365 或 366(闰年)。
lengthOfYear() 的基本用法
该方法属于 LocalDate 实例方法,调用时基于该日期所在的年份计算全年天数,与具体是哪一天无关。例如:
-
LocalDate.of(2023, 1, 1).lengthOfYear()→ 返回 365 -
LocalDate.of(2024, 12, 31).lengthOfYear()→ 返回 366(2024 是闰年) -
LocalDate.now().lengthOfYear()→ 返回当前系统年份的天数
和 isLeapYear() 的关系
lengthOfYear() 的底层逻辑等价于:
→ 如果 isLeapYear() == true,则返回 366;否则返回 365。
所以它和 LocalDate.isLeapYear() 完全一致,只是返回值类型不同(一个是 int,一个是 boolean)。
如果你只需要判断是否闰年,用 isLeapYear() 更语义清晰;如果明确需要“天数”这个数值,就用 lengthOfYear()。
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
注意:不依赖当前日期的具体值
无论 LocalDate 实例是 1 月 1 日还是 12 月 31 日,只要年份相同,lengthOfYear() 结果就一样。它只看年份字段,不关心月、日。
立即学习“Java免费学习笔记(深入)”;
-
LocalDate.parse("2000-02-29").lengthOfYear()→ 366(2000 年是闰年) -
LocalDate.parse("1900-01-01").lengthOfYear()→ 365(1900 年不是闰年,整百年需被 400 整除)
替代写法(不推荐)
虽然可以用 Year.of(year).length() 或 ChronoUnit.DAYS.between(start, end) 手动算,但没必要。前者稍绕,后者易出错且性能差。原生的 lengthOfYear() 简洁、准确、高效。

















