初心者レッスン
今回のお題は「カレンダーを作ってみよう」
ヲレ的回答はコレ。
require 'date' def view_calender(date) first_date = Date.new(date.year, date.month, 1) last_date = (first_date >> 1) - 1 print sprintf(" %s %d\n", Date::MONTHNAMES[date.month], date.year) print "Su Mo Tu We Th Fr Sa\n" print (" " * first_date.wday) (first_date..last_date).each{|day| print sprintf("%2d", day.mday) print day.wday == 6 ? "\n" : " " } end def main view_calender(Date.today) end if $0 == __FILE__ main end
「月の日数を返すメソッド」って無かったのね。
でも、月の最後の日を、「>> 1(1ヶ月先の日付を返す)」と「- 1(1日前の日付を返す)」
としたことでエレガントに実装できて満足。