CloudCastle Support API

Dates
in package

FinalYes

Хелперы работы с датой и временем поверх `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
throws
InvalidDateException

если строка не соответствует формату

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

при нераспознанной строке

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

On this page

Search results