Ruby的日期/时间助手很有用,但我发现有差异。看起来12个月不等于1年。检查一个月,你会发现它等于30天,当然,12 * 30天= 360天,比实际年长度短5.25天。在Ruby中,12个月!= 1.year
当我根据客户指定的授予月数设置对我们网站的某些组件的访问权限时,我遇到了这个问题。我发现在运行我的测试时,一个月的36.个学期提前几个星期就过期了。解决的办法是这样的:
def months_to_seconds(number_of_months)
((number_of_months.to_f/12) * 1.year).to_i.seconds
end
这将返回在任何一年的分数是由NUMBER_OF_MONTHS代表的秒数。
由于1.年与365.25天相等,为什么你认为他们没有1.月回报一年中1/12而不是30天?
有没有人跑过这个呢?有没有人有更好的解决方案?
不相关,但你不需要那里的'to_f'调用;只需除以12.0。 – 2010-11-12 21:19:54