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

Ruby中基于expiry_date判断可重考日期范围的实现方法

Ruby (with ActiveSupport): 判断当前日期是否处于测试创建后3-5年区间(仅已知expiry_date)

正确的条件判断代码

使用ActiveSupport的日期扩展,以下两种方式均可实现精确到天的判断:

方法1:用between?(更简洁直观)

current_date = Date.today
current_date.between?(expiry_date - 2.years, expiry_date)

方法2:用比较运算符

current_date = Date.today
current_date >= expiry_date - 2.years && current_date <= expiry_date

逻辑推导

已知expiry_date = 创建日期 + 5年,我们需要验证当前日期是否处于创建后3年到创建后5年的区间:

  1. 推导区间边界:
    • 创建后3年 = 创建日期 + 3年 = (expiry_date - 5年) + 3年 = expiry_date - 2年
    • 创建后5年 = 创建日期 + 5年 = expiry_date
  2. 只需确认当前日期落在expiry_date - 2年到expiry_date之间(包含两端日期)

示例验证

给定expiry_date = Mon, 25 Mar 2024:

  • expiry_date - 2年 = Mon, 25 Mar 2022(对应创建后3年的节点)
  • 当前日期为2023-03-25 → 落在区间内,返回true
  • 当前日期为2021-03-25 → 未到创建后3年,返回false
  • 当前日期为2024-03-25 → 刚好到期,返回true

错误代码问题分析

原代码直接将expiry_date与3.years.ago/5.years.ago比较,逻辑完全偏离需求:它判断的是过期日期是否在3-5年前,而非当前日期是否处于允许重写的时间窗口。

内容的提问来源于stack exchange,提问作者Japie Van schalkwyk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:55:29