今月のカレンダーを出力するスクリプト
書いてみた。
すごくシンプルだと思う。
require "date" today = Date.today firstday = Date.new(today.year, today.month, 1) lastday = Date.new(today.year, today.month, -1) puts today.strftime("%B %Y").center(21) puts "Su Mo Tu We Th Fr Sa" wday = firstday.wday print " " * wday firstday.day.upto(lastday.day){|d| printf("%2d ", d) wday += 1 if wday == 7 puts wday = 0 end }
ポイントを以下に。
- Date.newの日付を-1にすると、その月の月末を指定
- Date#strftimeでフォーマットを指定して出力
- center(width)で中央寄せ
- Date#wdayで週の何日目かを取得(日曜が0)
結果はこんな感じで出力される。
May 2007 Su Mo Tu We Th Fr Sa 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 31