Rubyがあれば、もうこんな事しなくて良いんです。
d + 60*60*24*i # 秒に直して計算
ruby はDate(日付)がRangeオブジェクトとして使えるのでとても早い
10日分の日付をあっという間に作る。
takuya@host $ ruby -r date -e \ '(Date.parse("2010-02-11")..Date.parse("2010-02-20")).each{|i|puts i }' 2010-02-11 2010-02-12 2010-02-13 2010-02-14 2010-02-15 2010-02-16 2010-02-17 2010-02-18 2010-02-19 2010-02-20
解説
ruby -r date #これは require 'date'とおなじ
Date.parse("2010-02-11") # これは日付オブジェクトを作る
Date.parse("2010-02-11").. # これは日付を繰り返しRangeオブジェクトをつくる
Date.parse("2010-02-11")..Date.parse("2010-02-20") # 11〜20 日までを作ります。
Rangeを作る "Date#.."メソッドが強力なのです。
他にも色々ある。
Date.upto もナカナカ
Date.parse("2011-02-18").upto(Date.parse('2011-02-28')){|d|puts d} 2011-02-18 2011-02-19 2011-02-20 2011-02-21 2011-02-22 2011-02-23 2011-02-24 2011-02-25 2011-02-26 2011-02-27 2011-02-28
upto/downto が出来る。
activesupportつかってもいいね
require 'rubygems' require 'active_support/time' Date.parse("2010-02-11") + 1.day Date.parse("2010-02-11") + 2.day Date.parse("2010-02-11") + 3.day Date.parse("2010-02-11") + 4.day Date.parse("2010-02-11") + 5.day Date.parse("2010-02-11") + 6.day Date.parse("2010-02-11") + 7.day Date.parse("2010-02-11") + 8.day Date.parse("2010-02-11") + 9.day Date.parse("2010-02-11") + 10.day
これを省略すると
(1..10).map{|i| Date.parse("2010-02-11") + i.day }
解説
1.day # Integerメソッドを追加されている。一日分の日付の差分を返す
Date.parse("2010-02-11") + # Date#+ で日付の足し算ができる。
ほんとRuby楽です。日付を扱うのが楽しくなりました。
python だと list Comprehensionで何とかできる。PHPはどうしようもない。array_mapでがんばれ
2011-02-18
Date#uptoを忘れていたので追記した。