DatePeriod::__construct
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
DatePeriod::__construct
Референца за `dateperiod.construct.php` со подобрена типографија и навигација.
DatePeriod::__construct
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
DatePeriod::__construct — Креира нов DatePeriod објект
= NULL
DateTimeInterface
$start,DateInterval
$interval,int
$recurrences,int
$options = 0)
DateTimeInterface
$start,DateInterval
$interval,DateTimeInterface
$end,int
$options = 0)
Следнава варијанта на конструкторот е депрецирана:
Наместо тоа DatePeriod::createFromISO8601String() треба да се користи статичкиот метод factory.
Креира нов DatePeriod објект.
DatePeriod објекти може да се користат како итератор за генерирање на број на DateTimeImmutable or
DateTime објект од start
датум, а interval, и end
датум или број на recurrences.
Класата на вратените објекти е еквивалентна на
DateTimeImmutable or DateTime
предок класа на start object.
Параметри
start-
Датумот на почеток на периодот. Вклучен по дифолт во резултатот.
interval-
Интервалот помеѓу повторувањата во периодот.
recurrences-
Бројот на повторувања. Бројот на вратени резултати е еден повисок од ова, бидејќи датумот на почеток е вклучен во резултатот по дифолт. Мора да биде поголем од
0. end-
Датумот на крај на периодот. Исклучен по дифолт од резултатот.
isostr-
Подмножество на » ISO 8601 спецификација за повторувачки интервал.
Примери за некои карактеристики на спецификацијата на интервал ISO 8601 што PHP не ги поддржува се:
-
нула појави (
R0/) -
временски поместувања различни од UTC (
Z), како што се+02:00.
-
нула појави (
options-
Поле со битови што може да се користи за контрола на одредено однесување со датумите на почеток и крај.
Со
DatePeriod::EXCLUDE_START_DATEго исклучувате датумот на почеток од множеството на повторувачки датуми во периодот.Со
DatePeriod::INCLUDE_END_DATEго вклучувате датумот на крај во множеството на повторувачки датуми во периодот.
Errors/Exceptions
Фрла DateMalformedPeriodStringException кога isostr не може да се анализира како валиден период ISO 8601. Пред PHP 8.3, ова беше
Исклучок.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.3.0 | список на имиња на класи, DateMalformedPeriodStringException наместо Исклучок. |
| 8.2.0 |
На DatePeriod::INCLUDE_END_DATE константата е додадена.
|
| 7.2.19, 7.3.6, 7.4.0 |
recurrences мора да биде поголемо од 0 now.
|
Примери
Пример #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';
// 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";
}Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in script on line 11 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);
// 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";
}Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
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";
}Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
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
Белешки
Неограничен број на повторувања како што е наведено во делот 4.5 од ISO 8601 „Период на повторувачко време“ не се поддржани, т.е. ниту поминување
"R/..." as isostr ниту поминување
null as end би работело.