1日後や1ヶ月前の日付を得る

require 'date'
def time_to_date( t)
  DateTime.new( t.year, t.mon, t.day, t.hour, t.min, t.sec)
end
def date_to_time( d)
  Time.mktime( d.year, d.mon, d.day, d.hour, d.min, d.sec)
end

t1 = Time.now		# 基準日
d1 = time_to_date( t1)
p (d1 + 1).strftime("%Y/%m/%d %H:%M:%S") # 1日後
p (d1 << 1).strftime("%Y/%m/%d %H:%M:%S") # 1ヶ月前

p date_to_time(d1 - 1).strftime("%Y/%m/%d %H:%M:%S")

Date#todayや DateTime#nowの中身を見ても直接Timeから変換していて,変換するためのメソッドが無いようなので適当に定義してみた.

require 'date'

week =%w[sun mon tue wed thu fri sat]

d = Date.today      # 今日を基準にする
ds = Date.new( d.year, d.mon+1, 1) # 来月の朔日
de = (ds >> 1) - 1  # 来月の晦日

(ds..de).each {|d|
  puts sprintf("%02d%02d(%s)", d.mon,d.day, week[d.wday])
  puts "" if d.wday==0 # 日曜毎に改行
}