當循環遍歷 DatePeriod 物件時,返回的物件總是實作 DateTimeInterface。返回的確切類型取決於 DatePeriod 的建立方式。如果 $start 是 DateTimeImmutable,則返回的物件將是 DateTimeImmutable 類型。如果使用 DateTime 物件,則返回的物件將是 DateTime 類型。
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
表示日期期間。
日期期間允許在給定的期間內,以規律的間隔重複,迭代一組日期和時間。
$start
,$interval
,$recurrences
,$options
= 0$start
,$interval
,$end
,$options
= 0迭代器返回的最小實例數。
如果已透過 DatePeriod 實例建構函式中的 recurrences 參數明確傳遞重複次數,則此屬性包含此值,如果起始日期未透過 DatePeriod::EXCLUDE_START_DATE
停用,則*加*一,如果結束日期已透過 DatePeriod::INCLUDE_END_DATE
啟用,則*加*一。
如果未明確傳遞重複次數,則此屬性包含返回的最小實例數。這將是 0
,如果起始日期未透過 DatePeriod::EXCLUDE_START_DATE
停用,則*加*一,如果結束日期已透過 DatePeriod::INCLUDE_END_DATE
啟用,則*加*一。
<?php
$start = new DateTime('2018-12-31 00:00:00');
$end = new DateTime('2021-12-31 00:00:00');
$interval = new DateInterval('P1M');
$recurrences = 5;
// 明確透過建構子設定重複次數
$period = new DatePeriod($start, $interval, $recurrences, DatePeriod::EXCLUDE_START_DATE);
echo $period->recurrences, "\n";
$period = new DatePeriod($start, $interval, $recurrences);
echo $period->recurrences, "\n";
$period = new DatePeriod($start, $interval, $recurrences, DatePeriod::INCLUDE_END_DATE);
echo $period->recurrences, "\n";
// 建構子中未設定重複次數
$period = new DatePeriod($start, $interval, $end);
echo $period->recurrences, "\n";
$period = new DatePeriod($start, $interval, $end, DatePeriod::EXCLUDE_START_DATE);
echo $period->recurrences, "\n";
?>
以上範例會輸出:
是否將結束日期包含在循環日期集合中。
是否將起始日期包含在循環日期集合中。
週期的起始日期。
在迭代期間,此變數將包含期間內的當前日期。
期間的結束日期。
一個 ISO 8601 循環間隔規範。
版本 (Version) | 說明 (Description) |
---|---|
8.4.0 | 類別常數現在已加入類型提示。 |
8.2.0 | 已新增 DatePeriod::INCLUDE_END_DATE 常數和 include_end_date 屬性。 |
8.0.0 | DatePeriod 現在實作 IteratorAggregate。先前實作的是 Traversable。 |
當循環遍歷 DatePeriod 物件時,返回的物件總是實作 DateTimeInterface。返回的確切類型取決於 DatePeriod 的建立方式。如果 $start 是 DateTimeImmutable,則返回的物件將是 DateTimeImmutable 類型。如果使用 DateTime 物件,則返回的物件將是 DateTime 類型。