(PHP 8 >= 8.3.0)
DatePeriod::createFromISO8601String — ISO8601 形式の文字列から、新しい DatePeriod オブジェクトを作成する
   ISO8601 形式の文字列から、specification
   の指定に従い、新しい DatePeriod オブジェクトを作成します。
  
specification» ISO 8601 repeating interval specification のサブセットを指定します。
      有効な ISO8601 形式の期間指定のサンプルとして、
     R5/2008-03-01T13:00:00Z/P1Y2M10DT2H30M
      のようなものがあります。これは、以下を指定しています:
     
R5/)
       
      2008-03-01T13:00:00Z から開始
       
      /P1Y2M10DT2H30M).
       
      ISO8601 形式の期間指定によっては、PHP がサポートしていないものがあります。 たとえば以下のようなものがあります:
R0/)
       
      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
