ISO8601 形式の文字列から、新しい DatePeriod オブジェクトを作成する

# DatePeriod::createFromISO8601String

(PHP 8 >= 8.3.0)

DatePeriod::createFromISO8601String — ISO8601 形式の文字列から、新しい DatePeriod オブジェクトを作成する

### 説明

public static function DatePeriod::createFromISO8601String(string `$specification`, int `$options` = 0): static

ISO8601 形式の文字列から、`specification` の指定に従い、新しい DatePeriod オブジェクトを作成します。

### パラメータ

`specification`

  » ISO 8601 repeating interval specification のサブセットを指定します。

  有効な ISO8601 形式の期間指定のサンプルとして、`R5/2008-03-01T13:00:00Z/P1Y2M10DT2H30M` のようなものがあります。これは、以下を指定しています:

  - 5 回繰り返す (`R5/`)
  - `2008-03-01T13:00:00Z` から開始
  - それぞれの繰り返しは、 1 year, 2 months, 10 days, 2 hours, 30 minute の間隔を持つ。 (`/P1Y2M10DT2H30M`).

  ISO8601 形式の期間指定によっては、PHP がサポートしていないものがあります。 たとえば以下のようなものがあります:

  1. 繰り返しが0回 (`R0/`)
  2. UTC (`Z`) 以外のタイムオフセット。 たとえば `+02:00` のようなものです。
`options`

  開始日と、終了日についての振る舞いを制御するのに使うビットフィールドです。

  `DatePeriod::EXCLUDE_START_DATE` を指定すると、期間内に繰り返される集合から開始日を除外できます。

  `DatePeriod::INCLUDE_END_DATE` を指定すると、期間内に繰り返される集合に終了日を含めることができます。

### 戻り値

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

このメソッドを使って作成された DatePeriod オブジェクトは、多くの DateTimeImmutable オブジェクトを生成するイテレータとして使えます。

### エラー / 例外

`specification` が、有効な ISO8601 形式の期間として パースできない場合、DateMalformedPeriodStringException がスローされます。

### 例

例1 DatePeriod::createFromISO8601String の例

    <?php
    $iso = 'R4/2023-07-01T00:00:00Z/P7D';
    $period = DatePeriod::createFromISO8601String($iso);

    // DatePeriod オブジェクトを走査することで、
    // その期間内で発生する日付を全て出力します
    foreach ($period as $date) {
        echo $date->format('Y-m-d'), "\n";
    }

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

    2023-07-01
    2023-07-08
    2023-07-15
    2023-07-22
    2023-07-29

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open