CalendarPeriod
in package
implements
IteratorAggregate, Countable
Период календарных дат с шагом (аналог `CarbonPeriod`).
Итерация ленивая — даты порождаются генератором по одной, поэтому период
длиной в годы с шагом в секунду не материализуется в памяти. Шаг задаётся
TimeSpan, DateInterval или строкой-модификатором ('1 month',
'+2 weeks'); шаг, не продвигающий дату вперёд, прерывает итерацию
типизированным исключением вместо бесконечного цикла.
Интервальный шаг отсчитывается от начала периода (k-я дата = начало + k
шагов), а месяцы и годы прибавляются без переполнения: период от 31 января
с шагом в месяц даёт 28 февраля и 31 марта, а не 3 марта и дрейф к третьему
числу. Строки со смыслом, не сводимым к кратному интервалу ('next friday',
'first day of next month', 'tomorrow'), применяются последовательно.
Tags
Table of Contents
Interfaces
- IteratorAggregate
- Countable
Methods
- between() : self
- Период от начала до конца включительно с заданным шагом.
- contains() : bool
- Попадает ли момент в границы периода с учётом их включённости.
- count() : int<0, max>
- Число дат в периоде (без материализации списка).
- end() : CalendarDate
- Конец периода.
- excludingEnd() : self
- Копия периода без конечной даты.
- excludingStart() : self
- Копия периода без начальной даты.
- getIterator() : Generator<int, CalendarDate>
- Ленивая итерация дат периода.
- start() : CalendarDate
- Начало периода.
- toArray() : array<int, CalendarDate>
- Все даты периода списком.
Methods
between()
Период от начала до конца включительно с заданным шагом.
public
static between(DateTimeInterface $start, DateTimeInterface $end[, TimeSpan|DateInterval|non-empty-string $step = '1 day' ]) : self
Parameters
- $start : DateTimeInterface
-
начало периода
- $end : DateTimeInterface
-
конец периода
- $step : TimeSpan|DateInterval|non-empty-string = '1 day'
-
шаг: длительность, интервал или модификатор
Tags
Return values
self —период с включёнными границами
contains()
Попадает ли момент в границы периода с учётом их включённости.
public
contains(DateTimeInterface $moment) : bool
Parameters
- $moment : DateTimeInterface
-
проверяемый момент
Return values
bool —момент внутри периода
count()
Число дат в периоде (без материализации списка).
public
count() : int<0, max>
Attributes
- #[Override]
Return values
int<0, max> —количество дат
end()
Конец периода.
public
end() : CalendarDate
Return values
CalendarDate —конец периода
excludingEnd()
Копия периода без конечной даты.
public
excludingEnd() : self
Return values
self —период, исключающий конец
excludingStart()
Копия периода без начальной даты.
public
excludingStart() : self
Return values
self —период, исключающий начало
getIterator()
Ленивая итерация дат периода.
public
getIterator() : Generator<int, CalendarDate>
Tags
Attributes
- #[Override]
Return values
Generator<int, CalendarDate> —даты периода по возрастанию
start()
Начало периода.
public
start() : CalendarDate
Return values
CalendarDate —начало периода
toArray()
Все даты периода списком.
public
toArray() : array<int, CalendarDate>
Return values
array<int, CalendarDate> —даты периода по возрастанию