У меня есть объект Time и хотелось бы найти следующий/предыдущий месяц. Добавление дней вычитания не работает, так как дни в месяц меняются.
time = Time.parse('21-12-2008 10:51 UTC')
next_month = time + 31 * 24 * 60 * 60
Увеличение месяца также падает, так как нужно было бы позаботиться о прокатке
time = Time.parse('21-12-2008 10:51 UTC')
next_month = Time.utc(time.year, time.month+1)
time = Time.parse('01-12-2008 10:51 UTC')
previous_month = Time.utc(time.year, time.month-1)
Единственное, что я нашел, это
time = Time.parse('21-12-2008 10:51 UTC')
d = Date.new(time.year, time.month, time.day)
d >>= 1
next_month = Time.utc(d.year, d.month, d.day, time.hour, time.min, time.sec, time.usec)
Есть ли более элегантный способ сделать это, чего я не вижу? Как вы это сделаете?