浏览 1863 次
锁定老帖子 主题:ruby计算年龄--为何我多了一岁?
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-11-19
最后修改:2009-11-20
也许你认为ruby计算年龄很简单,但出于某些原因,其实并非如此。我们一般会将用户的生日存在一个DATE类型的字段里。
def age Date.today.year - person.birthday.year end
这个方法对部分用户来说,完全没有问题。但是,为什么某些用户会凭空多出了一岁呢?
因此我们需要一个更精确的方法来计算用户的年龄。
def age ((Date.today - person.birthday.to_date) / 365).floor end
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-11-20
果真如此么?
|
|
返回顶楼 | |
发表时间:2009-11-20
楼主不要误导大家哦。。
年龄算的正确与否和你对年龄的定义有关。比如虚岁,周岁等叫法。 第一种算法是这样理解的:每过一年就长一岁。。。 比较精确的是每过一次生日就长一岁。 def age years = Date.today.year - birth.year years + (Date.today < birth + years.year ? -1 : 0) end 而楼主说的那种精准的方法是有问题的。 按照楼主的算法:一个2000年1月1日出生的人在2000年12月31日就1岁了... |
|
返回顶楼 | |
发表时间:2009-11-20
呵呵,楼主的做法是每365天是一岁,无视闰年
|
|
返回顶楼 | |