通常の日付のループ処理 RubyのDateクラスは先頭の日付と末尾の日付を繰り返し処理出来る仕組みがあります。 head = Date.new(2016, 1) tail = Date.new(2016, 12) # 1日ずつループ (head..tail).each { |date| p date.strftime('%Y%m%d') } # => '20160101', '20160102', '20160103', ... # n日の間隔でループ head.step(tail, 5).each { |date| p date.strftime('%Y%m%d') } # => '20160101', '20160106', '20160111', ... これはこれで、とても便利な機能なのですが、ループのstepの幅は日単位でしか指定することが出来ません。 年・月・週単位でループさせ