Php/docs/dateperiod.construct
DatePeriod::__construct
(PHP 5 >= 5.3.0, PHP 7)
DatePeriod::__construct — Creates a new DatePeriod object
说明
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
] )
Creates a new DatePeriod object.
参数
start
- The start date of the period.
interval
- The interval between recurrences within the period.
recurrences
- The number of recurrences.
end
- The end date of the period.
isostr
- An ISO 8601 repeating interval specification.
options
- Can be set to
DatePeriod::EXCLUDE_START_DATE
to exclude the start date from the set of recurring dates within the period.
更新日志
版本 | 说明 |
---|---|
5.5.8 | end type changed to
DateTimeInterface. Previously, DateTime. |
5.5.0 | start type changed to
DateTimeInterface. Previously, DateTime. |
范例
Example #1 DatePeriod example
<?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';// All of these periods are equivalent.$period = new DatePeriod($start, $interval, $recurrences);$period = new DatePeriod($start, $interval, $end);$period = new DatePeriod($iso);// By iterating over the DatePeriod object, all of the// recurring dates within that period are printed.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
'Example #2 DatePeriod example with 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);// By iterating over the DatePeriod object, all of the// recurring dates within that period are printed.// Note that, in this case, 2012-07-01 is not printed.foreach ($period as $date) { echo $date->format('Y-m-d')."\n";}?>
以上例程会输出:
2012-07-08 2012-07-15 2012-07-22 2012-07-29
注释
Unbound numbers of repetitions as specified by ISO 8601 section 4.5
"Recurring time interval" are not supported, i.e. neither passing
"R/..."
as isostr
nor passing
null
as end
would work.