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

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 如何计算Ruby中的给定日期后多少年?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这个问题在这里是为其他语言,所以让这里是一个 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)

猜你在找的Ruby相关文章