Time#till
指定した期間、一定の時間間隔でブロックを呼出すイテレータを書いてみました。わけわからん説明ですね。上手い言葉が見付かりませんでした。
例えば、2005/09/28〜2005/09/03の間、一日ごとにあるブロックを実行する場合には以下のようになります。
#!/usr/bin/env ruby class Time def till(time, step) t = self while t <= time yield(t) t += step end end end from = Time.local(2005, 9, 28) to = Time.local(2005, 10, 3) from.till(to, 3600 * 24) do |t| # each days p t end # => Wed Sep 28 00:00:00 JST 2005 # Thu Sep 29 00:00:00 JST 2005 # Fri Sep 30 00:00:00 JST 2005 # Sat Oct 01 00:00:00 JST 2005 # Sun Oct 02 00:00:00 JST 2005 # Mon Oct 03 00:00:00 JST 2005