CloudCastle Clock API

CalendarPeriod
in package
implements IteratorAggregate, Countable

FinalYes

Период календарных дат с шагом (аналог `CarbonPeriod`).

Итерация ленивая — даты порождаются генератором по одной, поэтому период длиной в годы с шагом в секунду не материализуется в памяти. Шаг задаётся TimeSpan, DateInterval или строкой-модификатором ('1 month', '+2 weeks'); шаг, не продвигающий дату вперёд, прерывает итерацию типизированным исключением вместо бесконечного цикла.

Интервальный шаг отсчитывается от начала периода (k-я дата = начало + k шагов), а месяцы и годы прибавляются без переполнения: период от 31 января с шагом в месяц даёт 28 февраля и 31 марта, а не 3 марта и дрейф к третьему числу. Строки со смыслом, не сводимым к кратному интервалу ('next friday', 'first day of next month', 'tomorrow'), применяются последовательно.

Tags
implements

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
throws
InvalidClockValueException

если строку шага не удалось применить или интервал направлен назад

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> —

количество дат

excludingEnd()

Копия периода без конечной даты.

public excludingEnd() : self
Return values
self —

период, исключающий конец

excludingStart()

Копия периода без начальной даты.

public excludingStart() : self
Return values
self —

период, исключающий начало

getIterator()

Ленивая итерация дат периода.

public getIterator() : Generator<int, CalendarDate>
Tags
throws
InvalidClockValueException

если шаг перестал продвигать дату вперёд

Attributes
#[Override]
Return values
Generator<int, CalendarDate> —

даты периода по возрастанию

toArray()

Все даты периода списком.

public toArray() : array<int, CalendarDate>
Return values
array<int, CalendarDate> —

даты периода по возрастанию

On this page

Search results