例えば1/1から1/10までを1日おきに刻むには下記のようにします。
$begin = new DateTime('2016-01-01');
$end = new DateTime('2016-01-10');
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval ,$end);
foreach($daterange as $date){
echo $date->format("Y-m-d H:i:s") . "\n";
}
結果
2016-01-01 00:00:00
2016-01-02 00:00:00
2016-01-03 00:00:00
2016-01-04 00:00:00
2016-01-05 00:00:00
2016-01-06 00:00:00
2016-01-07 00:00:00
2016-01-08 00:00:00
2016-01-09 00:00:00
終端(この例だと1/10)が含まれないので注意が必要です。
1時間刻みにしたい場合はP1D
の代わりにPT1H
と書きます。
DateIntervalの詳しい仕様はこちら。