DatePeriod::createFromISO8601String
ISO8601 形式の文字列から、新しい DatePeriod オブジェクトを作成する
説明
public static static DatePeriod::createFromISO8601String(string $specification
, int $options
= 0)
パラメータ
-
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 がサポートしていないものがあります。
たとえば以下のようなものがあります:
-
繰り返しが0回 (
R0/
)
-
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