You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何精确校验年龄在18-75周岁?现有代码存在逻辑问题

解决Java年龄精确校验(18-75周岁)的问题

原代码的核心问题是仅通过Period.between的getYears()获取年份差,完全忽略了月份和天数的差异。比如当用户出生日期是24-06-1948,今天是26-06-2023时,年份差是75,但实际用户已经过了75岁生日2天,此时应该判定为不符合条件,但原代码仍返回true。

修正后的代码

LocalDate today = LocalDate.now(ZoneId.systemDefault());
// 修正拼写错误:DateTimrFormatter → DateTimeFormatter
DateTimeFormatter dobFormat = DateTimeFormatter.ofPattern("dd-MM-uuuu");

// 精确判断年龄范围:满18周岁且未超过75周岁
boolean isEligible = inputdate.isBefore(today.minusYears(18)) || inputdate.isEqual(today.minusYears(18));
isEligible &= inputdate.isAfter(today.minusYears(75)) || inputdate.isEqual(today.minusYears(75));

return isEligible;

逻辑说明

  • today.minusYears(18):计算18年前的今天,用户出生日期小于等于这个日期,说明已经满18周岁。
  • today.minusYears(75):计算75年前的今天,用户出生日期大于等于这个日期,说明还未超过75周岁(即今天还没到用户的75岁生日,或者刚好是生日当天)。

另外,原代码还有两处小错误需要修正:

  • DateTimrFormatter拼写错误,应为DateTimeFormatter
  • return false末尾缺少分号

内容的提问来源于stack exchange,提问作者Nani K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 20:22:17