Php/docs/dateperiod.construct

来自菜鸟教程
跳转至:导航、​搜索

DatePeriod::__construct

(PHP 5 >= 5.3.0, PHP 7)

DatePeriod::__constructCreates 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.