У меня есть объект 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)
Есть ли более элегантный способ сделать это, чего я не вижу?
Как бы вы это сделали?