PHP DatePeriod Class Methods
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
Rate this post —