TimeのRange#stepを使うときのTIPS

たとえば、ある日「X」からある日「Y」まで、一日ごとの日付の入った配列を作りたいとき。

単純に

(stdate..eddate).step(3600*24).to_a.map{|t| t.strftime('%Y/%m/%d')}

とすると、すごく遅い。

そこで、

(stdate.to_i)..(eddate.to_i)).step(3600*24).to_a.map{|t| Time.at(t).strftime('%Y/%m/%d')}

のように、一度数値(秒)に直してあげると、劇的に早くなる。

なんとなく理由も想像できるけど、未確認・・・

ちなみに、バージョンはruby 1.8.7 (2008-08-11 patchlevel 72) [i386-mswin32]