新しい DatePeriod オブジェクトを作成する

# DatePeriod::__construct

(PHP 5 >= 5.3.0, PHP 7)

DatePeriod::__construct — 新しい DatePeriod オブジェクトを作成する

### 説明

public DatePeriod::__construct ( DateTimeInterface `$start` , DateInterval `$interval` , int `$recurrences` [, int `$options` ] )
public DatePeriod::__construct ( DateTimeInterface `$start` , DateInterval `$interval` , DateTimeInterface `$end` [, int `$options` ] )
public DatePeriod::__construct ( string `$isostr` [, int `$options` ] )

新しい DatePeriod オブジェクトを作成します。

### パラメータ

`start`

  期間の開始日。

`interval`

  期間内での発生間隔。

`recurrences`

  反復回数。

`end`

  期間の終了日。

`isostr`

  ISO 8601 による繰り返し間隔の指定。

`options`

  `DatePeriod::EXCLUDE_START_DATE` を指定すれば、 開始日を期間内の発生日から除外できます。

### 変更履歴

バージョン | 説明
--- | ---
5.5.8 | `end` の型が DateTimeInterface に変わりました。 これより前のバージョンでは DateTime でした。
5.5.0 | `start` の型が DateTimeInterface に変わりました。 これより前のバージョンでは、DateTime でした。

### 例

例1 DatePeriod の例

`<?php
$start = new DateTime('2012-07-01');
$interval = new DateInterval('P7D');
$end = new DateTime('2012-07-31');
$recurrences = 4;
$iso = 'R4/2012-07-01T00:00:00Z/P7D';
// これらはすべて同じ意味です
$period = new DatePeriod($start, $interval, $recurrences);
$period = new DatePeriod($start, $interval, $end);
$period = new DatePeriod($iso);
// DatePeriod の反復処理をすると、
// 期間内のすべての発生日が表示されます。
foreach ($period as $date) {
echo $date->format('Y-m-d')."\n";
}
?>`

上の例の出力は以下となります。

    2012-07-01
    2012-07-08
    2012-07-15
    2012-07-22
    2012-07-29

例2 DatePeriod で `DatePeriod::EXCLUDE_START_DATE` を使う例

`<?php
$start = new DateTime('2012-07-01');
$interval = new DateInterval('P7D');
$end = new DateTime('2012-07-31');
$period = new DatePeriod($start, $interval, $end,
DatePeriod::EXCLUDE_START_DATE);
// DatePeriod の反復処理をすると、
// 期間内のすべての発生日が表示されます。
// ただし、今回の場合は 2012-07-01 が表示されません。
foreach ($period as $date) {
echo $date->format('Y-m-d')."\n";
}
?>`

上の例の出力は以下となります。

    2012-07-08
    2012-07-15
    2012-07-22
    2012-07-29

### 注意

ISO 8601 のセクション 4.5 "Recurring time interval" に記載されている無限回数の繰り返しには対応していません。 つまり、`isostr` に "R/..." を渡したり `end` に `NULL` を渡したりしても動作しません。