DatePoint: Новый класс иммутабельной даты/времени для Symfony 6.4

Источник: «DatePoint: A new immutable date/time class for Symfony 6.4»
DatePoint является полноценной заменой классов даты/времени PHP, предоставляющей множество утилит, полную интеграцию с компонентом Clock и улучшенную обработку ошибок.

Что такое DatePoint

DatePoint — это новый иммутабельный класс даты/времени, появившийся в Symfony 6.4. Он разработан как более надёжная и стабильная альтернатива встроенному в PHP классу DateTime. DatePoint обладает рядом преимуществ по сравнению с DateTime, в том числе:

Как использовать DatePoint

Для использования DatePoint достаточно создать новый экземпляр класса, передав в него желаемые дату и время. Можно также создать экземпляр DatePoint из существующего объекта DateTime.

// Создание экземпляра DatePoint из строки
$firstPublicCommitOfSymfony = new DatePoint('2005-10-18 16:27:36 Europe/Paris');

// Создание экземпляра DatePoint из текущего времени
$orderCreatedAt = new DatePoint();

// Создание экземпляра DatePoint из существующего объекта DateTime
$welcomeDiscountValidUntil = new DatePoint('+1 month', reference: $user->getSignedUpAt());

Получив экземпляр DatePoint, вы можете использовать его для выполнения всех тех же операций, что и с объектом DateTime. Например, можно получить дату, время, часовой пояс и год экземпляра DatePoint. Можно также складывать, вычитать и сравнивать экземпляры DatePoint.

Использование DatePoint с компонентом Symfony Clock

Компонент Symfony Clock предоставляет возможность имитировать текущее время для тестовых целей. Это может быть полезно для тестирования кода, чувствительного ко времени, например, кода, планирующего выполнение задач или отправку уведомлений.

Для использования DatePoint с компонентом Clock достаточно передать экземпляр Clock в конструктор DatePoint. Например:

$clock = new Clock('2023-10-31 00:28:05 PST');

$orderCreatedAt = new DatePoint(timezone: new \DateTimeZone('UTC'), clock: $clock);

Этот код создаст экземпляр DatePoint, представляющий время 2023-10-31 00:28:05 PST, но в часовом поясе UTC.

Преимущества использования DatePoint

Использование DatePoint в ваших Symfony приложениях имеет ряд преимуществ:

Если вы разрабатываете новое приложение Symfony или обновляете существующее приложение до версии Symfony 6.4, я рекомендую рассмотреть возможность использования DatePoint для всех ваших нужд, связанных с датой и временем.

Дополнительные материалы

Предыдущая Статья

Новое в Symfony 6.4: Атрибуты AutowireLocator и AutowireIterator

Следующая Статья

Новое в Symfony 6.4: Интеграции Mailer, Translation, Notifier, Webhook и RemoteEvent