这个问题在这里是为其他语言,所以让这里是一个
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)