Ruby で月末日付を取得する

$ irb
irb(main):001:0> require 'date'
=> true
irb(main):002:0> day = Date.new(2008, 2, -1)
=> #<Date: 4909051/2,0,2299161>
irb(main):005:0> p day.to_s
"2008-02-29"
=> nil
irb(main):006:0> p day.strftime("%D")
"02/29/08"
=> nil
irb(main):007:0> p day.strftime("%d")
"29"
=> nil
irb(main):008:0>

応用

date.rb

require 'date'

day = Date.new(2008, 2, -1)
end_of_month   = day.strftime('%d').to_i
year_and_month = day.strftime('%Y%m')
for today in 1..end_of_month do
  p sprintf('%s%02d', year_and_month, today)
end

実行する。

$ ruby date.rb
"20080201"
"20080202"
"20080203"
"20080204"
"20080205"
"20080206"
"20080207"
"20080208"
"20080209"
"20080210"
"20080211"
"20080212"
"20080213"
"20080214"
"20080215"
"20080216"
"20080217"
"20080218"
"20080219"
"20080220"
"20080221"
"20080222"
"20080223"
"20080224"
"20080225"
"20080226"
"20080227"
"20080228"
"20080229"

$