(PHP 5 >= 5.3.0, PHP 7, PHP 8)
DatePeriod::__construct — 新しい DatePeriod オブジェクトを作成する
$start
,$interval
,$recurrences
,$options
= 0$start
,$interval
,$end
,$options
= 0$isostr
, int $options
= 0)新しい DatePeriod オブジェクトを作成します。
start
期間の開始日。
interval
期間内での発生間隔。
recurrences
反復回数。
0
より大きな値でなければいけません。
end
期間の終了日。
isostr
» ISO 8601 repeating interval specification
に基づく繰り返し間隔の指定。
0回の繰り返し (R0/
) はサポートしていません。
options
DatePeriod::EXCLUDE_START_DATE
を指定すれば、
開始日を期間内の発生日から除外できます。
バージョン | 説明 |
---|---|
7.2.19, 7.3.6, 7.4.0 |
recurrences は、0 より大きな値が必須になりました。
|
例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
を渡したりしても動作しません。