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