ある日からある日までの Range を週ごとの Range に分ける
日付のRangeを週に切り出すスクリプト - はこべにっき#を僕なりに書いてみた。
こんな感じでいいのかな?
gen-weeks.rb
2008/04/01 から 2008/04/21 までの Range を週ごとに分ける
require 'date' def gen_weeks(range) weeks = [] week = [] range.each do |date| week << date if date.wday == 6 weeks << week week = [] end end weeks << week end weeks = gen_weeks(Date.new(2008, 4, 1) .. Date.new(2008, 4, 21)) weeks.each do |week| print week.map {|date| "%2d" % date.day }.join(' '); puts puts '-' * 20 end
実行結果
1 2 3 4 5 -------------------- 6 7 8 9 10 11 12 -------------------- 13 14 15 16 17 18 19 -------------------- 20 21 --------------------
追記
- week の要素を day にすると day.day などが出てきてややこしかったので date に変更した
- week を出力するときに一番最後の空白は入らなかったのでなくした