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

Ruby开发问题:如何计算指定日期至今的存活天数?

解决Ruby计算地球存活天数的问题

我看你已经在尝试用Ruby的date库实现这个功能啦,不过代码里有几个小问题导致它没法正常运行,我帮你修正并解释一下:

原代码的问题点

  • 冗余的字符串拼接+潜在格式风险:你先把日、月、年拼成字符串再用Date.parse解析,不仅多此一举,还可能因为地区日期格式差异导致解析失败。
  • 语法错误:date_lived Date.parse(lived)这行缺少赋值符号=,Ruby会把它当成方法调用,自然会报错。

修正后的代码

require 'date'

def age_in_days(day, month, year)
  # 直接用Date.new创建出生日期对象,先把参数转成整数(兼容字符串/数字输入)
  birth_date = Date.new(year.to_i, month.to_i, day.to_i)
  # 计算今天与出生日期的差值,转成整数就是存活天数
  (Date.today - birth_date).to_i
end

代码解释

  1. 创建出生日期:用Date.new(year, month, day)是最直接稳妥的方式,它接受整数类型的年、月、日参数,所以我们先把输入的day/month/year转成整数,这样不管输入是字符串还是数字都能兼容。
  2. 计算天数差:Ruby的Date对象支持减法运算,结果是一个Date::Duration对象,调用to_i就能得到两个日期之间的天数差。

可选:添加异常处理(避免非法日期)

如果担心输入的日期不合法(比如2月30日、13月这种),可以加个异常捕获,让方法更健壮:

require 'date'

def age_in_days(day, month, year)
  begin
    birth_date = Date.new(year.to_i, month.to_i, day.to_i)
    (Date.today - birth_date).to_i
  rescue ArgumentError => e
    # 如果日期不合法,返回错误提示或者nil,根据需求调整
    "输入的日期不合法:#{e.message}"
  end
end

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:07:31