Да и нет:
12 months
- это то же самое, что и 1 year
, когда вы используете их в качестве относительных интервалов, потому что тогда они не преобразуются в секунды:
t = Time.now
#=> 2010-11-12 22:34:57 0100
t - 1.year == t - 12.months
#=> true
Внутренне эти интервалы хранятся в виде массивов числа лет, месяцев и дней, поэтому, если вы скажете, например:
1.year - 12.months
#=> 1 year and -12 months
это означает, что вычитание привело к интервалу, составляющему «один год и минус 12 месяцев».
Но если вы to_i
их, их нужно преобразовать в точное количество секунд, и кто-то решил, что «месяц» означает «30 дней», что является таким же хорошим приближением, как и любое другое, пока вы придерживаетесь .
Это указано в документах:
Хотя эти методы обеспечивают точное
расчет при использовании как в
примеры выше, следует проявлять осторожность
отметить, что это не так, если
результат «месяцев», «лет» и т. д.
перед использованием переделано
Полагаю, эти интервалы можно считать «лениво оцененными».