(PHP 5 >= 5.3.0, PHP 7, PHP 8)
DatePeriod::__construct โ ๆฐใใ DatePeriod ใชใใธใงใฏใใไฝๆใใ
$start
,$interval
,$recurrences
,$options
= 0$start
,$interval
,$end
,$options
= 0ใใฎใณใณในใใฉใฏใฟใฎใใชใจใผใทใงใณใฏใๆจๅฅจใใใชใใชใใพใใใ ไปฃใใใซใDatePeriod::createFromISO8601String() ใไฝฟใใพใใใใ
ๆฐใใ DatePeriod ใชใใธใงใฏใใไฝๆใใพใใ
DatePeriod ใชใใธใงใฏใใฏใ
ใใใใใฎ DateTimeImmutable
ใ DateTime ใ็ๆใใใคใใฌใผใฟใจใใฆไฝฟใใพใใ
ใใฉใกใผใฟ start
,
interval
,
end
, ใใใณ recurrences
ใฎๆฐใๆๅฎใงใใพใใ
่ฟใใใใชใใธใงใฏใใฎใฏใฉในใฏใ
start
ใฎ็ฅๅ
ใซใชใใชใใธใงใฏใใงใ
DateTimeImmutable ใ
DateTime ใซ็ญใใใชใใพใใ
start
ๆ้ใฎ้ๅงๆฅใใใใฉใซใใงใฏใ ็ตๆใปใใใซๅซใพใใฆใใพใใ
interval
ๆ้ๅ ใงใฎ็บ็้้ใ
recurrences
ๅๅพฉๅๆฐใ
่ฟใใใ็ตๆใฎๆฐใฏใใใฎๅคใใใฒใจใคๅคงใใใชใใพใใ
ใชใใชใใใใใฉใซใใงใฏ็ตๆใปใใใซ้ๅงๆฅใๅซใพใใฆใใใใใงใใ
0
ใใๅคงใใชๅคใงใชใใใฐใใใพใใใ
end
ๆ้ใฎ็ตไบๆฅใ ใใใฉใซใใงใฏใ็ตๆใปใใใใ้คๅคใใใฆใใพใใ
isostr
ยป ISO 8601 repeating interval specification ใฎใตใใปใใใๆๅฎใใพใใ
PHP ใใตใใผใใใฆใใชใใใตใใปใใใฎๆฉ่ฝใฎไพใไปฅไธใซ็คบใใพใ:
R0/
)
Z
)ใ
ใใจใใฐ +02:00
ใฎใใใชใใฎใงใใ
options
้ๅงๆฅใจ็ตไบๆฅใซ้ขใใๆฏใ่ใใๅถๅพกใใใใใใใฃใผใซใ
DatePeriod::EXCLUDE_START_DATE
ใๆๅฎใใใจใ้ๅงๆฅใๆ้ใฎ็ตๆใปใใใใ้คๅคใงใใพใใ
DatePeriod::INCLUDE_END_DATE
ใๆๅฎใใใจใ็ตไบๆฅใๆ้ใฎ็ตๆใปใใใซๅซใใใใจใใงใใพใใ
isostr
ใๆๅนใช ISO 8601 ใฎๆ้ใจใใฆใใผในใงใใชใๅ ดๅใ
DateMalformedPeriodStringException ใในใญใผใใพใใ
ใใใใๅใฎใใผใธใงใณใงใฏใException ใในใญใผใใใฆใใพใใใ
ใใผใธใงใณ | ่ชฌๆ |
---|---|
8.3.0 | Exception ใงใฏใชใใ DateMalformedPeriodStringException ใในใญใผใใใใใใซใชใใพใใใ |
8.2.0 |
ๅฎๆฐ DatePeriod::INCLUDE_END_DATE
ใ่ฟฝๅ ใใใพใใใ
|
7.2.19, 7.3.6, 7.4.0 |
recurrences ใฏใ0 ใใๅคงใใชๅคใๅฟ
้ ใซใชใใพใใใ
|
ไพ1 DatePeriod ใฎไพ
<?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';
// ใใใใฏใในใฆๅใๆๅณใงใ
$period = new DatePeriod($start, $interval, $recurrences);
$period = new DatePeriod($start, $interval, $end);
$period = new DatePeriod($iso);
// DatePeriod ใฎๅๅพฉๅฆ็ใใใใจใ
// ๆ้ๅ
ใฎใในใฆใฎ็บ็ๆฅใ่กจ็คบใใใพใใ
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 ใง 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);
// DatePeriod ใฎๅๅพฉๅฆ็ใใใใจใ
// ๆ้ๅ
ใฎใในใฆใฎ็บ็ๆฅใ่กจ็คบใใใพใใ
// ใใ ใใไปๅใฎๅ ดๅใฏ 2012-07-01 ใ่กจ็คบใใใพใใใ
foreach ($period as $date) {
echo $date->format('Y-m-d')."\n";
}
?>
ไธใฎไพใฎๅบๅใฏไปฅไธใจใชใใพใใ
2012-07-08 2012-07-15 2012-07-22 2012-07-29
ไพ3 ไธๅนด้ใซๅซใพใใใๆใฎๆๅพใฎๆจๆๆฅใๅ จใฆ่กจ็คบใใใDatePeriod ใฎไพ
<?php
$begin = new DateTime('2021-12-31');
$end = new DateTime('2022-12-31 23:59:59');
$interval = DateInterval::createFromDateString('last thursday of next month');
$period = new DatePeriod($begin, $interval, $end, DatePeriod::EXCLUDE_START_DATE);
foreach ($period as $dt) {
echo $dt->format('l Y-m-d'), "\n";
}
?>
ไธใฎไพใฎๅบๅใฏไปฅไธใจใชใใพใใ
Thursday 2022-01-27 Thursday 2022-02-24 Thursday 2022-03-31 Thursday 2022-04-28 Thursday 2022-05-26 Thursday 2022-06-30 Thursday 2022-07-28 Thursday 2022-08-25 Thursday 2022-09-29 Thursday 2022-10-27 Thursday 2022-11-24 Thursday 2022-12-29
ISO 8601 ใฎใปใฏใทใงใณ 4.5 "Recurring time interval" ใซ่จ่ผใใใฆใใ็ก้ๅๆฐใฎ็นฐใ่ฟใใซใฏๅฏพๅฟใใฆใใพใใใ
ใคใพใใisostr
ใซ
"R/..."
ใๆธกใใใ end
ใซ null
ใๆธกใใใใใฆใๅไฝใใพใใใ