CalendarDate
extends DateTimeImmutable
in package
uses
CalendarComparisonsTrait, CalendarFormattingTrait, CalendarHelpersTrait, CalendarMacrosTrait
Иммутабельная календарная дата поверх {@see DateTimeImmutable} с богатой работой по григорианскому календарю — то, ради чего обычно берут Carbon, но без единой внешней зависимости.
Возможности сверх нативного DateTimeImmutable:
- календарная арифметика месяцев и лет с явным выбором поведения на конце месяца: addMonths() (нативное переполнение: 31 января + 1 мес = 3 марта) и addMonthsNoOverflow() (прижатие к последнему дню: 31 января → 28/29 февраля);
- границы периодов (startOfMonth(), endOfQuarter() и т.д.);
- календарные геттеры (quarter(), isLeapYear(), weekOfYear());
- локализованные названия и форматирование на шести языках без ext-intl (monthName(), isoFormat(), diffForHumans()).
Конструктор не переопределяется: наследуются нативные modify()/add()/sub()/ setDate()/setTime(), возвращающие CalendarDate. Точку «сейчас» берут
фабрики now()/fromClock() — от часов приложения, поэтому дата
детерминирована в тестах.
Table of Contents
Methods
- __call() : mixed
- Вызов макроса как метода: `$date->addBusinessDays(3)`.
- addDay() : static
- Прибавить один день.
- addDays() : static
- Прибавить дни.
- addHours() : static
- Прибавить часы.
- addMinutes() : static
- Прибавить минуты.
- addMonth() : static
- Прибавить один месяц (нативное переполнение).
- addMonths() : static
- Прибавить месяцы (нативное поведение: 31 января + 1 мес = 3 марта).
- addMonthsNoOverflow() : static
- Прибавить месяцы без переполнения: день прижимается к последнему дню целевого месяца (31 января + 1 мес = 28/29 февраля).
- addSeconds() : static
- Прибавить секунды.
- addWeeks() : static
- Прибавить недели.
- addYear() : static
- Прибавить один год (нативное переполнение).
- addYears() : static
- Прибавить годы (нативное поведение: 29 февраля + 1 год = 1 марта).
- addYearsNoOverflow() : static
- Прибавить годы без переполнения (29 февраля + 1 год = 28 февраля).
- age() : int
- Возраст в полных годах относительно часов приложения.
- callMacro() : mixed
- Явный вызов макроса — без магии, видимый статическим анализаторам.
- copy() : static
- Копия момента как отдельный экземпляр (идиома Carbon; объект иммутабелен, копия полезна для читаемости цепочек).
- day() : int
- День месяца.
- dayName() : string
- Локализованное название дня недели.
- dayOfWeek() : int
- День недели (0=воскресенье … 6=суббота), совместимо с `date('w')`.
- dayOfYear() : int
- Порядковый день года (1–366).
- daysInMonth() : int
- Число дней в текущем месяце (28–31).
- daysInYear() : int
- Число дней в году (365 или 366).
- diffForHumans() : string
- Человекочитаемая разница относительно другого момента (или «сейчас» глобальных часов) на выбранном языке: «5 дней назад», «in 2 hours».
- diffInDays() : int
- Абсолютная разница в целых сутках.
- diffInHours() : int
- Абсолютная разница в целых часах.
- diffInMinutes() : int
- Абсолютная разница в целых минутах.
- diffInMonths() : int
- Абсолютная календарная разница в целых месяцах.
- diffInSeconds() : int
- Абсолютная разница в целых секундах.
- diffInWeeks() : int
- Абсолютная разница в целых неделях.
- diffInYears() : int
- Абсолютная календарная разница в целых годах.
- endOfCentury() : static
- Конец века (последний год века — 2100, 2000 и т.д., 23:59:59.999999).
- endOfDay() : static
- Конец суток (23:59:59.999999).
- endOfDecade() : static
- Конец десятилетия (последний день года, кратного 10 плюс 9, 23:59:59.999999).
- endOfMonth() : static
- Конец месяца (последний день, 23:59:59.999999).
- endOfQuarter() : static
- Конец квартала (последний день последнего месяца квартала, 23:59:59.999999).
- endOfWeek() : static
- Конец недели (воскресенье по ISO-8601, 23:59:59.999999).
- endOfYear() : static
- Конец года (31 декабря, 23:59:59.999999).
- firstOfMonth() : static
- Первый день месяца (день = 1, время сохраняется — в отличие от {@see startOfMonth()}, обнуляющей время).
- flushMacros() : void
- Удалить все зарегистрированные макросы.
- fromClock() : static
- Календарная дата «сейчас» от заданных часов.
- fromInterface() : static
- Календарная дата из любого источника даты.
- hasMacro() : bool
- Зарегистрирован ли макрос с таким именем.
- isAfter() : bool
- Строго позже ли другого момента.
- isBefore() : bool
- Строго раньше ли другого момента.
- isBetween() : bool
- Попадает ли момент в интервал между двумя границами (порядок границ любой).
- isCurrentDay() : bool
- Сегодняшний ли это день относительно часов приложения.
- isCurrentMonth() : bool
- Текущий ли это месяц (год + месяц) относительно часов приложения.
- isCurrentYear() : bool
- Текущий ли это год относительно часов приложения.
- isFirstOfMonth() : bool
- Первое ли это число месяца.
- isFriday() : bool
- Пятница ли это.
- isFuture() : bool
- В будущем ли дата относительно «сейчас» глобальных часов.
- isLastOfMonth() : bool
- Последнее ли это число месяца.
- isLeapYear() : bool
- Високосный ли год.
- isMidday() : bool
- Полдень ли это (12:00:00).
- isMonday() : bool
- Понедельник ли это.
- isoFormat() : string
- Форматирование в стиле moment.js/ISO с локализованными названиями.
- isoWeekday() : int
- День недели по ISO-8601 (1=понедельник … 7=воскресенье).
- isPast() : bool
- В прошлом ли дата относительно «сейчас» глобальных часов.
- isSameDay() : bool
- Один ли календарный день с другим моментом (в собственных зонах).
- isSameMonth() : bool
- Один ли календарный месяц (год + месяц) с другим моментом.
- isSameQuarter() : bool
- Один ли квартал (год + квартал) с другим моментом.
- isSameYear() : bool
- Один ли календарный год с другим моментом.
- isSaturday() : bool
- Суббота ли это.
- isStartOfDay() : bool
- Начало ли это суток (00:00:00.000000).
- isSunday() : bool
- Воскресенье ли это.
- isThursday() : bool
- Четверг ли это.
- isToday() : bool
- Сегодня ли это относительно часов приложения.
- isTomorrow() : bool
- Завтра ли это относительно часов приложения.
- isTuesday() : bool
- Вторник ли это.
- isWednesday() : bool
- Среда ли это.
- isWeekday() : bool
- Будний ли это день (понедельник–пятница).
- isWeekend() : bool
- Выходной ли это (суббота или воскресенье).
- isYesterday() : bool
- Вчера ли это относительно часов приложения.
- lastOfMonth() : static
- Последний день месяца (день = 28–31, время сохраняется).
- macro() : void
- Зарегистрировать (или заменить) макрос.
- max() : static
- Более поздний из двух моментов.
- min() : static
- Более ранний из двух моментов.
- month() : int
- Номер месяца.
- monthName() : string
- Локализованное название месяца.
- next() : static
- Ближайший указанный день недели строго после текущего.
- now() : static
- Календарная дата «сейчас» от глобальных часов приложения.
- parse() : static
- Разбор строки даты/времени с типизированным исключением вместо `false`.
- previous() : static
- Ближайший указанный день недели строго до текущего.
- quarter() : int
- Квартал (1–4).
- setDay() : static
- Установить день месяца, сохранив остальные поля.
- setHour() : static
- Установить час, сохранив минуты и секунды.
- setMinute() : static
- Установить минуты, сохранив час и секунды.
- setMonth() : static
- Установить месяц, сохранив остальные поля.
- setSecond() : static
- Установить секунды, сохранив час и минуты.
- setYear() : static
- Установить год, сохранив остальные поля.
- startOfCentury() : static
- Начало века (первый год века — 2001, 1901 и т.д., 00:00:00).
- startOfDay() : static
- Начало суток (00:00:00.000000).
- startOfDecade() : static
- Начало десятилетия (первый день года, кратного 10, 00:00:00).
- startOfMonth() : static
- Начало месяца (первый день, 00:00:00).
- startOfQuarter() : static
- Начало квартала (первый день первого месяца квартала, 00:00:00).
- startOfWeek() : static
- Начало недели (понедельник по ISO-8601, 00:00:00).
- startOfYear() : static
- Начало года (1 января, 00:00:00).
- subDay() : static
- Отнять один день.
- subDays() : static
- Отнять дни.
- subHours() : static
- Отнять часы.
- subMinutes() : static
- Отнять минуты.
- subMonth() : static
- Отнять один месяц (нативное переполнение).
- subMonths() : static
- Отнять месяцы (нативное поведение).
- subMonthsNoOverflow() : static
- Отнять месяцы без переполнения.
- subSeconds() : static
- Отнять секунды.
- subWeeks() : static
- Отнять недели.
- subYear() : static
- Отнять один год (нативное переполнение).
- subYears() : static
- Отнять годы (нативное поведение).
- subYearsNoOverflow() : static
- Отнять годы без переполнения.
- toArray() : array{year: int, month: int, day: int, hour: int, minute: int, second: int}
- Разложение на календарные компоненты.
- toAtomString() : string
- ATOM: «2026-06-15T13:45:30+00:00».
- toCookieString() : string
- Cookie: «Monday, 15-Jun-2026 13:45:30 UTC».
- toDateString() : string
- Дата без времени: «2026-06-15».
- toDateTimeLocalString() : string
- Локальные дата и время без зоны: «2026-06-15T13:45:30».
- toDateTimeString() : string
- Дата и время: «2026-06-15 13:45:30».
- toIso8601String() : string
- ISO 8601: «2026-06-15T13:45:30+00:00».
- toRfc2822String() : string
- RFC 2822: «Mon, 15 Jun 2026 13:45:30 +0000».
- toRssString() : string
- RSS: «Mon, 15 Jun 2026 13:45:30 +0000».
- toTimeString() : string
- Время без даты: «13:45:30».
- toW3cString() : string
- W3C: «2026-06-15T13:45:30+00:00».
- weekOfMonth() : int
- Порядковый номер недели внутри месяца (1–6).
- weekOfYear() : int
- Номер недели по ISO-8601 (1–53).
- year() : int
- Год.
Methods
__call()
Вызов макроса как метода: `$date->addBusinessDays(3)`.
public
__call(string $name, array<string|int, mixed> $arguments) : mixed
Parameters
- $name : string
-
имя вызванного метода
- $arguments : array<string|int, mixed>
-
аргументы вызова
Tags
Return values
mixed —результат макроса
addDay()
Прибавить один день.
public
addDay() : static
Return values
static —сдвинутая дата
addDays()
Прибавить дни.
public
addDays(int $days) : static
Parameters
- $days : int
-
число дней (может быть отрицательным)
Return values
static —сдвинутая дата
addHours()
Прибавить часы.
public
addHours(int $hours) : static
Parameters
- $hours : int
-
число часов (знак допустим)
Return values
static —сдвинутая дата
addMinutes()
Прибавить минуты.
public
addMinutes(int $minutes) : static
Parameters
- $minutes : int
-
число минут (знак допустим)
Return values
static —сдвинутая дата
addMonth()
Прибавить один месяц (нативное переполнение).
public
addMonth() : static
Return values
static —сдвинутая дата
addMonths()
Прибавить месяцы (нативное поведение: 31 января + 1 мес = 3 марта).
public
addMonths(int $months) : static
Parameters
- $months : int
-
число месяцев (может быть отрицательным)
Return values
static —сдвинутая дата
addMonthsNoOverflow()
Прибавить месяцы без переполнения: день прижимается к последнему дню целевого месяца (31 января + 1 мес = 28/29 февраля).
public
addMonthsNoOverflow(int $months) : static
Parameters
- $months : int
-
число месяцев (может быть отрицательным)
Return values
static —сдвинутая дата без выхода за границу месяца
addSeconds()
Прибавить секунды.
public
addSeconds(int $seconds) : static
Parameters
- $seconds : int
-
число секунд (знак допустим)
Return values
static —сдвинутая дата
addWeeks()
Прибавить недели.
public
addWeeks(int $weeks) : static
Parameters
- $weeks : int
-
число недель (может быть отрицательным)
Return values
static —сдвинутая дата
addYear()
Прибавить один год (нативное переполнение).
public
addYear() : static
Return values
static —сдвинутая дата
addYears()
Прибавить годы (нативное поведение: 29 февраля + 1 год = 1 марта).
public
addYears(int $years) : static
Parameters
- $years : int
-
число лет (может быть отрицательным)
Return values
static —сдвинутая дата
addYearsNoOverflow()
Прибавить годы без переполнения (29 февраля + 1 год = 28 февраля).
public
addYearsNoOverflow(int $years) : static
Parameters
- $years : int
-
число лет (может быть отрицательным)
Return values
static —сдвинутая дата без выхода за границу месяца
age()
Возраст в полных годах относительно часов приложения.
public
age() : int
Return values
int —число полных лет между датой и текущим моментом
callMacro()
Явный вызов макроса — без магии, видимый статическим анализаторам.
public
callMacro(string $name, mixed ...$arguments) : mixed
Parameters
- $name : string
-
имя макроса
- $arguments : mixed
-
аргументы после даты
Tags
Return values
mixed —результат макроса
copy()
Копия момента как отдельный экземпляр (идиома Carbon; объект иммутабелен, копия полезна для читаемости цепочек).
public
copy() : static
Return values
static —новый экземпляр с тем же моментом
day()
День месяца.
public
day() : int
Attributes
- #[Override]
Return values
int —день
dayName()
Локализованное название дня недели.
public
dayName([string $locale = 'en' ][, bool $short = false ]) : string
Parameters
- $locale : string = 'en'
-
код языка (ru/en/de/fr/es/it)
- $short : bool = false
-
короткая форма
Tags
Return values
string —название дня недели на выбранном языке
dayOfWeek()
День недели (0=воскресенье … 6=суббота), совместимо с `date('w')`.
public
dayOfWeek() : int
Return values
int —день недели
dayOfYear()
Порядковый день года (1–366).
public
dayOfYear() : int
Return values
int —день года
daysInMonth()
Число дней в текущем месяце (28–31).
public
daysInMonth() : int
Attributes
- #[Override]
Return values
int —дней в месяце
daysInYear()
Число дней в году (365 или 366).
public
daysInYear() : int
Return values
int —дней в году
diffForHumans()
Человекочитаемая разница относительно другого момента (или «сейчас» глобальных часов) на выбранном языке: «5 дней назад», «in 2 hours».
public
diffForHumans([DateTimeInterface|null $other = null ][, string $locale = 'en' ]) : string
Parameters
- $other : DateTimeInterface|null = null
-
точка отсчёта;
null— «сейчас» часов приложения - $locale : string = 'en'
-
код языка (ru/en/de/fr/es/it)
Tags
Return values
string —локализованная разница
diffInDays()
Абсолютная разница в целых сутках.
public
diffInDays(DateTimeInterface $other) : int
Parameters
- $other : DateTimeInterface
-
второй момент
Return values
int —неотрицательное число полных суток
diffInHours()
Абсолютная разница в целых часах.
public
diffInHours(DateTimeInterface $other) : int
Parameters
- $other : DateTimeInterface
-
второй момент
Return values
int —неотрицательное число полных часов
diffInMinutes()
Абсолютная разница в целых минутах.
public
diffInMinutes(DateTimeInterface $other) : int
Parameters
- $other : DateTimeInterface
-
второй момент
Return values
int —неотрицательное число полных минут
diffInMonths()
Абсолютная календарная разница в целых месяцах.
public
diffInMonths(DateTimeInterface $other) : int
Parameters
- $other : DateTimeInterface
-
второй момент
Return values
int —неотрицательное число полных календарных месяцев
diffInSeconds()
Абсолютная разница в целых секундах.
public
diffInSeconds(DateTimeInterface $other) : int
Parameters
- $other : DateTimeInterface
-
второй момент
Return values
int —неотрицательное число секунд
diffInWeeks()
Абсолютная разница в целых неделях.
public
diffInWeeks(DateTimeInterface $other) : int
Parameters
- $other : DateTimeInterface
-
второй момент
Return values
int —неотрицательное число полных недель
diffInYears()
Абсолютная календарная разница в целых годах.
public
diffInYears(DateTimeInterface $other) : int
Parameters
- $other : DateTimeInterface
-
второй момент
Return values
int —неотрицательное число полных календарных лет
endOfCentury()
Конец века (последний год века — 2100, 2000 и т.д., 23:59:59.999999).
public
endOfCentury() : static
Return values
static —последний момент века
endOfDay()
Конец суток (23:59:59.999999).
public
endOfDay() : static
Return values
static —та же дата в конце суток
endOfDecade()
Конец десятилетия (последний день года, кратного 10 плюс 9, 23:59:59.999999).
public
endOfDecade() : static
Return values
static —последний момент десятилетия
endOfMonth()
Конец месяца (последний день, 23:59:59.999999).
public
endOfMonth() : static
Return values
static —последний момент месяца
endOfQuarter()
Конец квартала (последний день последнего месяца квартала, 23:59:59.999999).
public
endOfQuarter() : static
Return values
static —последний момент квартала
endOfWeek()
Конец недели (воскресенье по ISO-8601, 23:59:59.999999).
public
endOfWeek() : static
Return values
static —последний момент недели
endOfYear()
Конец года (31 декабря, 23:59:59.999999).
public
endOfYear() : static
Return values
static —последний момент года
firstOfMonth()
Первый день месяца (день = 1, время сохраняется — в отличие от {@see startOfMonth()}, обнуляющей время).
public
firstOfMonth() : static
Return values
static —та же дата с первым числом месяца
flushMacros()
Удалить все зарегистрированные макросы.
public
static flushMacros() : void
fromClock()
Календарная дата «сейчас» от заданных часов.
public
static fromClock(ClockInterface $clock[, DateTimeZone|non-empty-string|null $timezone = null ]) : static
Parameters
- $clock : ClockInterface
-
источник времени
- $timezone : DateTimeZone|non-empty-string|null = null
-
таймзона результата;
null— зона часов
Tags
Return values
static —текущий момент указанных часов как календарная дата
fromInterface()
Календарная дата из любого источника даты.
public
static fromInterface(DateTimeInterface $moment) : static
Parameters
- $moment : DateTimeInterface
-
исходный момент времени
Return values
static —та же точка как календарная дата
hasMacro()
Зарегистрирован ли макрос с таким именем.
public
static hasMacro(string $name) : bool
Parameters
- $name : string
-
имя метода
Return values
bool —макрос зарегистрирован
isAfter()
Строго позже ли другого момента.
public
isAfter(DateTimeInterface $other) : bool
Parameters
- $other : DateTimeInterface
-
сравниваемый момент
Return values
bool —true, если этот момент позже
isBefore()
Строго раньше ли другого момента.
public
isBefore(DateTimeInterface $other) : bool
Parameters
- $other : DateTimeInterface
-
сравниваемый момент
Return values
bool —true, если этот момент раньше
isBetween()
Попадает ли момент в интервал между двумя границами (порядок границ любой).
public
isBetween(DateTimeInterface $from, DateTimeInterface $to[, bool $inclusive = true ]) : bool
Parameters
- $from : DateTimeInterface
-
одна граница интервала
- $to : DateTimeInterface
-
другая граница интервала
- $inclusive : bool = true
-
включать ли сами границы
Return values
bool —true, если момент внутри интервала
isCurrentDay()
Сегодняшний ли это день относительно часов приложения.
public
isCurrentDay() : bool
Return values
bool —true, если календарный день совпадает с текущим
isCurrentMonth()
Текущий ли это месяц (год + месяц) относительно часов приложения.
public
isCurrentMonth() : bool
Return values
bool —true, если год и месяц совпадают с текущими
isCurrentYear()
Текущий ли это год относительно часов приложения.
public
isCurrentYear() : bool
Return values
bool —true, если год совпадает с текущим
isFirstOfMonth()
Первое ли это число месяца.
public
isFirstOfMonth() : bool
Return values
bool —true, если день равен 1
isFriday()
Пятница ли это.
public
isFriday() : bool
Return values
bool —true, если день недели — пятница
isFuture()
В будущем ли дата относительно «сейчас» глобальных часов.
public
isFuture() : bool
Return values
bool —true, если момент строго позже текущего
isLastOfMonth()
Последнее ли это число месяца.
public
isLastOfMonth() : bool
Return values
bool —true, если день равен длине месяца
isLeapYear()
Високосный ли год.
public
isLeapYear() : bool
Return values
bool —true для високосного года
isMidday()
Полдень ли это (12:00:00).
public
isMidday() : bool
Return values
bool —true для 12:00:00
isMonday()
Понедельник ли это.
public
isMonday() : bool
Return values
bool —true, если день недели — понедельник
isoFormat()
Форматирование в стиле moment.js/ISO с локализованными названиями.
public
isoFormat(non-empty-string $format[, string $locale = 'en' ]) : string
Токены: YYYY YY MMMM MMM MM M DD D dddd ddd HH H mm m ss s. Прочие символы (разделители) сохраняются как есть.
Parameters
- $format : non-empty-string
-
шаблон токенов
- $locale : string = 'en'
-
код языка (ru/en/de/fr/es/it)
Tags
Return values
string —отформатированная строка
isoWeekday()
День недели по ISO-8601 (1=понедельник … 7=воскресенье).
public
isoWeekday() : int
Attributes
- #[Override]
Return values
int —день недели ISO
isPast()
В прошлом ли дата относительно «сейчас» глобальных часов.
public
isPast() : bool
Return values
bool —true, если момент строго раньше текущего
isSameDay()
Один ли календарный день с другим моментом (в собственных зонах).
public
isSameDay(DateTimeInterface $other) : bool
Parameters
- $other : DateTimeInterface
-
сравниваемый момент
Return values
bool —true, если совпадают год, месяц и день
isSameMonth()
Один ли календарный месяц (год + месяц) с другим моментом.
public
isSameMonth(DateTimeInterface $other) : bool
Parameters
- $other : DateTimeInterface
-
сравниваемый момент
Return values
bool —true, если совпадают год и месяц
isSameQuarter()
Один ли квартал (год + квартал) с другим моментом.
public
isSameQuarter(DateTimeInterface $other) : bool
Parameters
- $other : DateTimeInterface
-
сравниваемый момент
Return values
bool —true, если совпадают год и квартал
isSameYear()
Один ли календарный год с другим моментом.
public
isSameYear(DateTimeInterface $other) : bool
Parameters
- $other : DateTimeInterface
-
сравниваемый момент
Return values
bool —true, если совпадает год
isSaturday()
Суббота ли это.
public
isSaturday() : bool
Return values
bool —true, если день недели — суббота
isStartOfDay()
Начало ли это суток (00:00:00.000000).
public
isStartOfDay() : bool
Return values
bool —true для полуночи
isSunday()
Воскресенье ли это.
public
isSunday() : bool
Return values
bool —true, если день недели — воскресенье
isThursday()
Четверг ли это.
public
isThursday() : bool
Return values
bool —true, если день недели — четверг
isToday()
Сегодня ли это относительно часов приложения.
public
isToday() : bool
Return values
bool —true, если календарный день совпадает с текущим
isTomorrow()
Завтра ли это относительно часов приложения.
public
isTomorrow() : bool
Return values
bool —true, если это следующий календарный день
isTuesday()
Вторник ли это.
public
isTuesday() : bool
Return values
bool —true, если день недели — вторник
isWednesday()
Среда ли это.
public
isWednesday() : bool
Return values
bool —true, если день недели — среда
isWeekday()
Будний ли это день (понедельник–пятница).
public
isWeekday() : bool
Return values
bool —true для понедельника–пятницы
isWeekend()
Выходной ли это (суббота или воскресенье).
public
isWeekend() : bool
Return values
bool —true для субботы и воскресенья
isYesterday()
Вчера ли это относительно часов приложения.
public
isYesterday() : bool
Return values
bool —true, если это предыдущий календарный день
lastOfMonth()
Последний день месяца (день = 28–31, время сохраняется).
public
lastOfMonth() : static
Return values
static —та же дата с последним числом месяца
macro()
Зарегистрировать (или заменить) макрос.
public
static macro(non-empty-string $name, Closure $macro) : void
Parameters
- $name : non-empty-string
-
имя метода, под которым макрос будет доступен
- $macro : Closure
-
замыкание
fn (CalendarDate $date, mixed ...$args): mixed
max()
Более поздний из двух моментов.
public
max(DateTimeInterface $other) : static
Parameters
- $other : DateTimeInterface
-
сравниваемый момент
Return values
static —этот момент либо $other, смотря какой позже
min()
Более ранний из двух моментов.
public
min(DateTimeInterface $other) : static
Parameters
- $other : DateTimeInterface
-
сравниваемый момент
Return values
static —этот момент либо $other, смотря какой раньше
month()
Номер месяца.
public
month() : int
Attributes
- #[Override]
Return values
int —месяц
monthName()
Локализованное название месяца.
public
monthName([string $locale = 'en' ][, bool $short = false ]) : string
Parameters
- $locale : string = 'en'
-
код языка (ru/en/de/fr/es/it)
- $short : bool = false
-
короткая форма
Tags
Return values
string —название месяца на выбранном языке
next()
Ближайший указанный день недели строго после текущего.
public
next(int $isoWeekday) : static
Parameters
- $isoWeekday : int
-
целевой день недели ISO (1=понедельник … 7=воскресенье)
Return values
static —следующая дата с этим днём недели
now()
Календарная дата «сейчас» от глобальных часов приложения.
public
static now([DateTimeZone|non-empty-string|null $timezone = null ]) : static
Parameters
- $timezone : DateTimeZone|non-empty-string|null = null
-
таймзона результата;
null— зона часов
Tags
Return values
static —текущий момент как календарная дата
parse()
Разбор строки даты/времени с типизированным исключением вместо `false`.
public
static parse(non-empty-string $datetime[, DateTimeZone|non-empty-string|null $timezone = null ]) : static
Parameters
- $datetime : non-empty-string
-
строка даты/времени
- $timezone : DateTimeZone|non-empty-string|null = null
-
таймзона результата
Tags
Return values
static —разобранная календарная дата
previous()
Ближайший указанный день недели строго до текущего.
public
previous(int $isoWeekday) : static
Parameters
- $isoWeekday : int
-
целевой день недели ISO (1=понедельник … 7=воскресенье)
Return values
static —предыдущая дата с этим днём недели
quarter()
Квартал (1–4).
public
quarter() : int
Attributes
- #[Override]
Return values
int —квартал
setDay()
Установить день месяца, сохранив остальные поля.
public
setDay(int $day) : static
Parameters
- $day : int
-
новый день
Return values
static —дата с изменённым днём
setHour()
Установить час, сохранив минуты и секунды.
public
setHour(int $hour) : static
Parameters
- $hour : int
-
новый час
Return values
static —дата с изменённым часом
setMinute()
Установить минуты, сохранив час и секунды.
public
setMinute(int $minute) : static
Parameters
- $minute : int
-
новые минуты
Return values
static —дата с изменёнными минутами
setMonth()
Установить месяц, сохранив остальные поля.
public
setMonth(int $month) : static
Parameters
- $month : int
-
новый месяц
Return values
static —дата с изменённым месяцем
setSecond()
Установить секунды, сохранив час и минуты.
public
setSecond(int $second) : static
Parameters
- $second : int
-
новые секунды
Return values
static —дата с изменёнными секундами
setYear()
Установить год, сохранив остальные поля.
public
setYear(int $year) : static
Parameters
- $year : int
-
новый год
Return values
static —дата с изменённым годом
startOfCentury()
Начало века (первый год века — 2001, 1901 и т.д., 00:00:00).
public
startOfCentury() : static
Return values
static —первый момент века
startOfDay()
Начало суток (00:00:00.000000).
public
startOfDay() : static
Return values
static —та же дата в начале суток
startOfDecade()
Начало десятилетия (первый день года, кратного 10, 00:00:00).
public
startOfDecade() : static
Return values
static —первый момент десятилетия
startOfMonth()
Начало месяца (первый день, 00:00:00).
public
startOfMonth() : static
Return values
static —первый момент месяца
startOfQuarter()
Начало квартала (первый день первого месяца квартала, 00:00:00).
public
startOfQuarter() : static
Return values
static —первый момент квартала
startOfWeek()
Начало недели (понедельник по ISO-8601, 00:00:00).
public
startOfWeek() : static
Return values
static —первый момент недели
startOfYear()
Начало года (1 января, 00:00:00).
public
startOfYear() : static
Return values
static —первый момент года
subDay()
Отнять один день.
public
subDay() : static
Return values
static —сдвинутая дата
subDays()
Отнять дни.
public
subDays(int $days) : static
Parameters
- $days : int
-
число дней
Return values
static —сдвинутая дата
subHours()
Отнять часы.
public
subHours(int $hours) : static
Parameters
- $hours : int
-
число часов
Return values
static —сдвинутая дата
subMinutes()
Отнять минуты.
public
subMinutes(int $minutes) : static
Parameters
- $minutes : int
-
число минут
Return values
static —сдвинутая дата
subMonth()
Отнять один месяц (нативное переполнение).
public
subMonth() : static
Return values
static —сдвинутая дата
subMonths()
Отнять месяцы (нативное поведение).
public
subMonths(int $months) : static
Parameters
- $months : int
-
число месяцев
Return values
static —сдвинутая дата
subMonthsNoOverflow()
Отнять месяцы без переполнения.
public
subMonthsNoOverflow(int $months) : static
Parameters
- $months : int
-
число месяцев
Return values
static —сдвинутая дата без выхода за границу месяца
subSeconds()
Отнять секунды.
public
subSeconds(int $seconds) : static
Parameters
- $seconds : int
-
число секунд
Return values
static —сдвинутая дата
subWeeks()
Отнять недели.
public
subWeeks(int $weeks) : static
Parameters
- $weeks : int
-
число недель
Return values
static —сдвинутая дата
subYear()
Отнять один год (нативное переполнение).
public
subYear() : static
Return values
static —сдвинутая дата
subYears()
Отнять годы (нативное поведение).
public
subYears(int $years) : static
Parameters
- $years : int
-
число лет
Return values
static —сдвинутая дата
subYearsNoOverflow()
Отнять годы без переполнения.
public
subYearsNoOverflow(int $years) : static
Parameters
- $years : int
-
число лет
Return values
static —сдвинутая дата без выхода за границу месяца
toArray()
Разложение на календарные компоненты.
public
toArray() : array{year: int, month: int, day: int, hour: int, minute: int, second: int}
Return values
array{year: int, month: int, day: int, hour: int, minute: int, second: int}toAtomString()
ATOM: «2026-06-15T13:45:30+00:00».
public
toAtomString() : string
Return values
string —момент в формате ATOM
toCookieString()
Cookie: «Monday, 15-Jun-2026 13:45:30 UTC».
public
toCookieString() : string
Return values
string —момент в формате cookie
toDateString()
Дата без времени: «2026-06-15».
public
toDateString() : string
Return values
string —дата в формате Y-m-d
toDateTimeLocalString()
Локальные дата и время без зоны: «2026-06-15T13:45:30».
public
toDateTimeLocalString() : string
Return values
string —момент в формате Y-m-d\TH:i:s
toDateTimeString()
Дата и время: «2026-06-15 13:45:30».
public
toDateTimeString() : string
Return values
string —момент в формате Y-m-d H:i:s
toIso8601String()
ISO 8601: «2026-06-15T13:45:30+00:00».
public
toIso8601String() : string
Return values
string —момент по ISO 8601
toRfc2822String()
RFC 2822: «Mon, 15 Jun 2026 13:45:30 +0000».
public
toRfc2822String() : string
Return values
string —момент по RFC 2822
toRssString()
RSS: «Mon, 15 Jun 2026 13:45:30 +0000».
public
toRssString() : string
Return values
string —момент в формате RSS
toTimeString()
Время без даты: «13:45:30».
public
toTimeString() : string
Return values
string —время в формате H:i:s
toW3cString()
W3C: «2026-06-15T13:45:30+00:00».
public
toW3cString() : string
Return values
string —момент в формате W3C
weekOfMonth()
Порядковый номер недели внутри месяца (1–6).
public
weekOfMonth() : int
Return values
int —неделя месяца
weekOfYear()
Номер недели по ISO-8601 (1–53).
public
weekOfYear() : int
Return values
int —номер недели
year()
Год.
public
year() : int
Attributes
- #[Override]
Return values
int —четырёхзначный год