今月のカレンダーを出力
わりとキレイに書けたような気がする。
たのしいRubyの練習問題にも似たようなのあったなぁ。
require "date" def calendar today = Date.today fday = Date.new(today.year, today.month, 1) lday = Date.new(today.year, today.month, -1) # Date#wday は週の何日目かを表す。日曜が0。月曜を0にしたいので-1する。 wday = fday.wday - 1 # 日曜日の場合は-1なので6に変更する。 wday = 6 if wday == -1 puts today.strftime("%Y %B").center(20) puts "--------------------" puts "Mo Tu We Th Fr Sa Su" print " " * (wday) fday.day.upto(lday.day){|d| print "%2d " % d wday += 1 if wday == 7 puts wday = 0 end } end calendar
実行結果はこんな感じ。
2007 June -------------------- Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30