| Function Name | Function Description |
|---|---|
| DatePeriod::__construct() | Creates a new DatePeriod object |
| DatePeriod::getDateInterval() | Gets the interval |
| DatePeriod::getEndDate() | Gets the end date |
| DatePeriod::getRecurrences() | Gets the number of recurrences |
| DatePeriod::getStartDate() | Gets the start date |
PHP DatePeriod::__construct() Method
What does DatePeriod::__construct() do?
The PHP DatePeriod:: method creates a new DatePeriod object.__construct()
PHP DatePeriod::__construct() Syntax
PHP DatePeriod::__construct() Parameters
-
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.
PHP DatePeriod::__construct() Working Examples
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";
}
?>
Output of the above code:
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";
}
?>
Output of the above code:
2012-07-08
2012-07-15
2012-07-22
2012-07-29
Changelog for PHP DatePeriod::__construct() Method
5.5.8 — end type changed to DateTimeInterface. Previously, DateTime.
5.5.0 — start type changed to DateTimeInterface. Previously, DateTime.
Additional Tips from Fellow Developers
Contributed By: simon dot kohlmeyer
I found two things useful to know that aren't covered here.
1. endDate is excluded:
<?php
$i = new DateInterval('P1D');
$d1 = new Datetime();
$d2 = clone $d1; $d2->add($i);
foreach(new DatePeriod($d1, $i, $d2) as $d) {
echo $d->format('Y-m-d H:i:s') . "\n";
}
?>
Will output:
2010-11-03 12:39:53
(Another one because I got it wrong at first)
2. For the first form, recurrences really means REcurrences, not occurences.
<?php
$i = new DateInterval('P1D');
$d = new Datetime();
foreach(new DatePeriod($d, $i, 1) as $d) {
echo $d->format('Y-m-d H:i:s') . "\n";
}
?>
Will output:
2010-11-03 12:41:05
2010-11-04 12:41:05
Contributed By: lars
When you add the time 23:59:59 to the end DateTime object something like the following then the end date will be included in the period:
<?php
$date_start = new DateTime('2012-03-12');
$date_end = new DateTime('2012-03-22 23:59:59');
$interval = '+2 days';
$date_interval = DateInterval::createFromDateString($interval);
$period = new DatePeriod($date_start, $date_interval, $date_end, DatePeriod::EXCLUDE_START_DATE);
foreach($period as $dt) {
echo $dt->format('d/m');
}
?>
OUTPUT:
14/03
16/03
18/03
20/03
22/03
PHP DatePeriod::getDateInterval() Method
What does DatePeriod::getDateInterval() do?
The PHP DatePeriod:: method gets the interval .getDateInterval()
PHP DatePeriod::getDateInterval() Syntax
public DatePeriod::getDateInterval ( void ) : DateInterval
PHP DatePeriod::getDateInterval() Parameters
This method does not accept any parameters.
PHP DatePeriod::getDateInterval() Return Value
The PHP DatePeriod::getDateInterval() method returns a DateInterval object
PHP DatePeriod::getDateInterval() Working Examples
1. DatePeriod::getDateInterval() example
<?php
$period = new DatePeriod('R7/2016-05-16T00:00:00Z/P1D');
$interval = $period->getDateInterval();
echo $interval->format('%d day');
?>
Output of the above code:
1 day
PHP DatePeriod::getEndDate() Method
What does DatePeriod::getEndDate() do?
The PHP DatePeriod:: method gets the end date .getEndDate()
PHP DatePeriod::getEndDate() Syntax
public DatePeriod::getEndDate ( void ) : DateTimeInterface
PHP DatePeriod::getEndDate() Parameters
This method does not accept any parameters.
PHP DatePeriod::getEndDate() Return Value
The PHP DatePeriod::getEndDate() method returns NULL if the DatePeriod does not have an end date. For example, when initialized with the recurrences parameter, or the isostr parameter without an end date.
PHP DatePeriod::getEndDate() Working Examples
1. DatePeriod::getEndDate() example
<?php
$period = new DatePeriod(
new DateTime('2016-05-16T00:00:00Z'),
new DateInterval('P1D'),
new DateTime('2016-05-20T00:00:00Z')
);
$start = $period->getEndDate();
echo $start->format(DateTime::ISO8601);
?>
Output of the above code:
2016-05-20T00:00:00+0000
2. DatePeriod::getEndDate() without an end date
<?php
$period = new DatePeriod(
new DateTime('2016-05-16T00:00:00Z'),
new DateInterval('P1D'),
7
);
var_dump($period->getEndDate());
?>
Output of the above code:
NULL
PHP DatePeriod::getRecurrences() Method
What does DatePeriod::getRecurrences() do?
The PHP DatePeriod:: method gets the number of recurrences.getRecurrences()
PHP DatePeriod::getRecurrences() Syntax
public DatePeriod::getRecurrences ( void ) : int
PHP DatePeriod::getRecurrences() Parameters
This method does not accept any parameters.
PHP DatePeriod::getRecurrences() Return Value
The PHP DatePeriod::getRecurrences() method returns the number of recurrences.
PHP DatePeriod::getStartDate() Method
What does DatePeriod::getStartDate() do?
The PHP DatePeriod:: method gets the start date .getStartDate()
PHP DatePeriod::getStartDate() Syntax
public DatePeriod::getStartDate ( void ) : DateTimeInterface
PHP DatePeriod::getStartDate() Parameters
This method does not accept any parameters.
PHP DatePeriod::getStartDate() Return Value
The PHP DatePeriod::getStartDate() method returns a DateTimeImmutable object when the DatePeriod is initialized with a DateTimeImmutable object as the start parameter.
PHP DatePeriod::getStartDate() Working Examples
1. DatePeriod::getStartDate() example
<?php
$period = new DatePeriod('R7/2016-05-16T00:00:00Z/P1D');
$start = $period->getStartDate();
echo $start->format(DateTime::ISO8601);
?>
Output of the above code:
2016-05-16T00:00:00+0000