LoginSignup
12
14

More than 5 years have passed since last update.

DateIntervalとDatePeriodを使って指定期間内で日付を刻みながらforeachでイテレートする

Last updated at Posted at 2015-11-10

例えば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の詳しい仕様はこちら。

12
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
14