加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何计算Ruby中的给定日期后多少年?

发布时间:2020-12-16 19:49:17 所属栏目:百科 来源:网络整理
导读:这个问题在这里是为其他语言,所以让这里是一个 Ruby. 如何计算从给定日期过去的完整年数?你可能已经猜到了,那就是自动计算人的年龄.最近的一个是distance_of_time_in_words Rails帮手,所以下面的模板 Jack is %= distance_of_time_in_words (Time.now,Time.
这个问题在这里是为其他语言,所以让这里是一个 Ruby.

如何计算从给定日期过去的完整年数?你可能已经猜到了,那就是自动计算人的年龄.最近的一个是distance_of_time_in_words Rails帮手,所以下面的模板

Jack is <%= distance_of_time_in_words (Time.now,Time.local(1950,03,22)) %> old.

产量

Jack is over 59 years old.

但是我需要更精确的功能,只产生数字.有没有

如果存在某种Ruby on Rails帮助器函数,这是可以的,虽然纯Ruby解决方案会更好.

编辑:问题的要点是需要非近似解决方案. 3月2日,杰克应该是59岁,第二天他应该是60岁.应考虑闰年等.

解决方法

你想要年龄,因为人们通常会理解它,还是要寻找一个精确的时间量度?如果是前者,就没有必要担心闰年和其他并发症.您只需要计算年数差异,如果该人今年还没有生日,则减少它.如果是后者,你可以将秒数转换成多年,正如其他答案所建议的那样.
def age_in_completed_years (bd,d)
    # Difference in years,less one if you have not had a birthday this year.
    a = d.year - bd.year
    a = a - 1 if (
         bd.month >  d.month or 
        (bd.month >= d.month and bd.day > d.day)
    )
    a
end

birthdate = Date.new(2000,12,15)
today     = Date.new(2009,14)

puts age_in_completed_years(birthdate,today)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读