Помощники даты/времени Ruby полезны, но я нашел несоответствие. Кажется, что 12.months не равно 1.Year. Проверьте 1.month, и вы найдете его равным 30.days и, конечно, 12 * 30.days = 360.дней, 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.год равен в секундах до 365,25 дней, почему вы думаете, что у них не было 1.month, чтобы вернуть секунды на 1/12 года вместо 30 дней?
Кто-нибудь сталкивался с этим раньше? У кого-нибудь есть лучшее решение?