Dates
in package
Хелперы работы с датой и временем поверх `DateTimeImmutable`.
Лёгкая альтернатива Carbon: fail-safe разбор (исключение вместо false), PSR-20-совместимое «сейчас» (тестируемость через cloudcastle/clock), человекочитаемые интервалы с грамматически точными русскими счётными формами через cloudcastle/inflector — «5 минут назад», «через 21 час», а не переводы-заглушки.
Table of Contents
Methods
- diffHuman() : string
- Человекочитаемый интервал до «сейчас» (или до `$other`): «5 минут назад», «через 21 час», «только что».
- diffInDays() : int
- Календарная разница в полных днях (знаковая: `$b` раньше — отрицательная).
- endOfDay() : DateTimeImmutable
- Конец суток момента (23:59:59.999999).
- endOfMonth() : DateTimeImmutable
- Последний день месяца момента (конец суток).
- fromFormat() : DateTimeImmutable
- Строгий разбор по формату: `fromFormat('d.m.Y', '31.12.2026')`.
- fromTimestamp() : DateTimeImmutable
- Момент из Unix-времени (секунды, допускается дробная часть).
- isFuture() : bool
- Момент в будущем относительно «сейчас»?
- isPast() : bool
- Момент в прошлом относительно «сейчас»?
- isToday() : bool
- Сегодняшняя ли дата (в зоне момента).
- isWeekend() : bool
- Выходной ли день (суббота или воскресенье).
- now() : DateTimeImmutable
- Текущий момент: из подменённых часов либо системный.
- parse() : DateTimeImmutable
- Fail-safe разбор строки даты: исключение вместо тихого false.
- startOfDay() : DateTimeImmutable
- Начало суток момента (00:00:00.000000).
- startOfMonth() : DateTimeImmutable
- Первый день месяца момента (начало суток).
- useClock() : void
- Подменить источник времени (PSR-20) — для тестов и заморозки.
Methods
diffHuman()
Человекочитаемый интервал до «сейчас» (или до `$other`): «5 минут назад», «через 21 час», «только что».
public
static diffHuman(DateTimeInterface $moment[, DateTimeInterface|null $other = null ][, Language $language = Language::Russian ]) : string
Русские счётные формы согласуются грамматикой cloudcastle/inflector, английские — правилами плюрализации; никаких таблиц переводов.
Parameters
- $moment : DateTimeInterface
-
момент
- $other : DateTimeInterface|null = null
-
точка отсчёта (null — сейчас)
- $language : Language = Language::Russian
-
язык результата (Russian или English)
Return values
string —Человекочитаемый интервал до «сейчас» (или до $other):
diffInDays()
Календарная разница в полных днях (знаковая: `$b` раньше — отрицательная).
public
static diffInDays(DateTimeInterface $a, DateTimeInterface $b) : int
Parameters
- $a : DateTimeInterface
-
первый момент (точка отсчёта)
- $b : DateTimeInterface
-
второй момент
Return values
int —число полных календарных дней между $a и $b со знаком
endOfDay()
Конец суток момента (23:59:59.999999).
public
static endOfDay(DateTimeInterface $moment) : DateTimeImmutable
Parameters
- $moment : DateTimeInterface
-
исходный момент
Return values
DateTimeImmutable —тот же день в 23:59:59.999999
endOfMonth()
Последний день месяца момента (конец суток).
public
static endOfMonth(DateTimeInterface $moment) : DateTimeImmutable
Parameters
- $moment : DateTimeInterface
-
исходный момент
Return values
DateTimeImmutable —последнее число месяца в 23:59:59.999999
fromFormat()
Строгий разбор по формату: `fromFormat('d.m.Y', '31.12.2026')`.
public
static fromFormat(string $format, string $value[, DateTimeZone|non-empty-string|null $timezone = null ]) : DateTimeImmutable
Parameters
- $format : string
-
формат DateTimeImmutable::createFromFormat
- $value : string
-
строка даты
- $timezone : DateTimeZone|non-empty-string|null = null
-
зона по умолчанию
Tags
Return values
DateTimeImmutable —Строгий разбор по формату: fromFormat('d.m.Y', '31.12.2026')
fromTimestamp()
Момент из Unix-времени (секунды, допускается дробная часть).
public
static fromTimestamp(float|int $timestamp) : DateTimeImmutable
Parameters
- $timestamp : float|int
-
секунды Unix-эпохи
Return values
DateTimeImmutable —Момент из Unix-времени (секунды, допускается дробная часть)
isFuture()
Момент в будущем относительно «сейчас»?
public
static isFuture(DateTimeInterface $moment) : bool
Parameters
- $moment : DateTimeInterface
-
проверяемый момент
Return values
bool —true, если момент позже текущего
isPast()
Момент в прошлом относительно «сейчас»?
public
static isPast(DateTimeInterface $moment) : bool
Parameters
- $moment : DateTimeInterface
-
проверяемый момент
Return values
bool —true, если момент раньше текущего
isToday()
Сегодняшняя ли дата (в зоне момента).
public
static isToday(DateTimeInterface $moment) : bool
Parameters
- $moment : DateTimeInterface
-
проверяемый момент
Return values
bool —true, если календарная дата совпадает с сегодняшней
isWeekend()
Выходной ли день (суббота или воскресенье).
public
static isWeekend(DateTimeInterface $moment) : bool
Parameters
- $moment : DateTimeInterface
-
проверяемый момент
Return values
bool —true, если день недели — суббота или воскресенье
now()
Текущий момент: из подменённых часов либо системный.
public
static now([DateTimeZone|non-empty-string|null $timezone = null ]) : DateTimeImmutable
Parameters
- $timezone : DateTimeZone|non-empty-string|null = null
-
зона результата (null — системная)
Return values
DateTimeImmutable —Текущий момент: из подменённых часов либо системный
parse()
Fail-safe разбор строки даты: исключение вместо тихого false.
public
static parse(string $value[, DateTimeZone|non-empty-string|null $timezone = null ]) : DateTimeImmutable
Parameters
- $value : string
-
дата в любом формате, понятном DateTimeImmutable
- $timezone : DateTimeZone|non-empty-string|null = null
-
зона по умолчанию для строк без зоны
Tags
Return values
DateTimeImmutable —Fail-safe разбор строки даты: исключение вместо тихого false
startOfDay()
Начало суток момента (00:00:00.000000).
public
static startOfDay(DateTimeInterface $moment) : DateTimeImmutable
Parameters
- $moment : DateTimeInterface
-
исходный момент
Return values
DateTimeImmutable —тот же день в 00:00:00.000000
startOfMonth()
Первый день месяца момента (начало суток).
public
static startOfMonth(DateTimeInterface $moment) : DateTimeImmutable
Parameters
- $moment : DateTimeInterface
-
исходный момент
Return values
DateTimeImmutable —первое число месяца в 00:00:00
useClock()
Подменить источник времени (PSR-20) — для тестов и заморозки.
public
static useClock(ClockInterface|null $clock) : void
null возвращает системные часы.
Parameters
- $clock : ClockInterface|null
-
часы или null