Ruby 的日期/时间助手很有用,但我发现了一个差异。似乎 12.months 不等于 1.year。检查 1.month,您会发现它等于 30.days,当然,12 * 30.days = 360.days,比实际一年的长度短 5.25 天。
当我根据客户指定的授予月数设置对我们网站某些组件的访问权限时,我遇到了这个问题。我发现在运行我的测试时,36 个月的期限提前了几周到期。解决方案是这样的:
def months_to_seconds(number_of_months)
( (number_of_months.to_f / 12) * 1.year).to_i.seconds
end
这将返回由 number_of_months 表示的一年中任何部分的秒数。
由于 1.year 等于 365.25 天的秒数,为什么您认为他们没有 1.month 返回一年中 1/12 的秒数而不是 30 天?
有没有人遇到过这个?有没有人有更好的解决方案?