Creates a new DatePeriod object

DatePeriod::__construct

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DatePeriod::__constructCreates a new DatePeriod object

說明

public DatePeriod::__construct(
    DateTimeInterface $start,
    DateInterval $interval,
    int $recurrences,
    int $options = 0
)
public DatePeriod::__construct(
    DateTimeInterface $start,
    DateInterval $interval,
    DateTimeInterface $end,
    int $options = 0
)
public DatePeriod::__construct(string $isostr, int $options = 0)

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. Must be greater than 0.

end

The end date of the period.

isostr

An » ISO 8601 repeating interval specification. Zero occurrences (R0/) are not supported.

options

Can be set to DatePeriod::EXCLUDE_START_DATE to exclude the start date from the set of recurring dates within the period.

更新日誌

版本 說明
7.2.19, 7.3.6, 7.4.0 recurrences must be greater than 0 now.

範例

示例 #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

示例 #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.

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *