Ruby 1.8.7
Rails 2.3.2
# Dateでやってますが、Timeでも動きます
# 先月=last_month, 翌月=next_month
>> date = Date.new(2009, 1, 1)
=> Thu, 01 Jan 2009
>> date.last_month
=> Mon, 01 Dec 2008
>> date.next_month
=> Sun, 01 Feb 2009
# 2ヶ月後、2ヶ月前
>> date.months_ago(2)
=> Sat, 01 Nov 2008
>> date.months_since(2)
=> Sun, 01 Mar 2009
# monthをyearにすれば、年の扱い
>> date.next_year
=> Fri, 01 Jan 2010
>> date.last_year
=> Tue, 01 Jan 2008
>> date.years_ago(2)
=> Mon, 01 Jan 2007
>> date.years_since(2)
=> Sat, 01 Jan 2011
# 標準関数でやるとこんな感じ
>> date = Date.new(2009, 1, 1)
>> date << 1
=> 20081201
# ちなみに3月31日の1ヶ月前2月28日
>> date = Date.new(2009, 3, 31)
>> date << 1
=> 20090228