(PHP 5 >= 5.3.0, PHP 7, PHP 8)
DatePeriod 类表示一个时间周期。
时间周期内允许对一组日期和时间进行迭代,在指定的时间间隔内定期重复。
$start
,$interval
,$recurrences
,$options
= 0$start
,$interval
,$end
,$options
= 0DatePeriod::EXCLUDE_START_DATE
在 DatePeriod::__construct() 构造函数中使用,排除开始时间。
DatePeriod::INCLUDE_END_DATE
在 DatePeriod::__construct() 构造函数中使用,包含结束时间。
迭代器返回的最小实例数。
如果在 DatePeriod 实例的构造函数中显式通过 recurrences
参数传递重复次数,然后此属性将包含该值,如果开始时间没有通过 DatePeriod::EXCLUDE_START_DATE
禁用,则该属性加 1,如果结束时间已经通过 DatePeriod::INCLUDE_END_DATE
启用,则该属性加 1。
如果没有显式传递重复次数,则此属性包含返回实例的最小数量。这将是
0
,如果开始时间没有通过 DatePeriod::EXCLUDE_START_DATE
禁用,则该属性加 1,如果结束时间已经通过 DatePeriod::INCLUDE_END_DATE
启用,则该属性加 1。
<?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 格式的间隔。
版本 | 说明 |
---|---|
8.2.0 |
新增 DatePeriod::INCLUDE_END_DATE 常量和
include_end_date 属性。
|
8.0.0 | 现在 DatePeriod 实现了(implement) IteratorAggregate。之前实现的是 Traversable。 |