DatePeriod::__construct
(PHP 5 >= 5.3.0, PHP 7)
DatePeriod::__construct — 新しい DatePeriod オブジェクトを作成する
説明
public DatePeriod::__construct
( DateTimeInterface $start
, DateInterval $interval
, int $recurrences
[, int $options
] )
public DatePeriod::__construct
( DateTimeInterface $start
, DateInterval $interval
, DateTimeInterface $end
[, int $options
] )
public DatePeriod::__construct
( string $isostr
[, int $options
] )
新しい DatePeriod オブジェクトを作成します。
パラメータ
start
- 期間の開始日。
interval
- 期間内での発生間隔。
recurrences
- 反復回数。
end
- 期間の終了日。
isostr
- ISO 8601 による繰り返し間隔の指定。
options
DatePeriod::EXCLUDE_START_DATE
を指定すれば、 開始日を期間内の発生日から除外できます。
変更履歴
バージョン | 説明 |
---|---|
5.5.8 | end の型が
DateTimeInterface に変わりました。 これより前のバージョンでは DateTime でした。 |
5.5.0 | start の型が
DateTimeInterface に変わりました。 これより前のバージョンでは、DateTime でした。 |
例
例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
を渡したりしても動作しません。