DatePeriod::__construct

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

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

説明

public DatePeriod::__construct(
    DateTimeInterface $start,
    DateInterval $interval,
    int $recurrences,
    int $options = 0
)
public DatePeriod::__construct(
    DateTimeInterface $start,
    DateInterval $interval,
    DateTimeInterface $end,
    int $options = 0
)
public DatePeriod::__construct(string $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/..." を渡したり endnull を渡したりしても動作しません。

関連キーワード:  DatePeriod, 作成, オブジェクト, construct, interval, int, 繰り返し, end, recurrences, isostr