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