PHPackages                             dobrosite/time-service - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. dobrosite/time-service

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

dobrosite/time-service
======================

Служба времени для PHP

1.0.0(3y ago)07.1kMITPHPPHP ^8.0

Since Jul 21Pushed 3y ago1 watchersCompare

[ Source](https://github.com/dobrosite/time-service)[ Packagist](https://packagist.org/packages/dobrosite/time-service)[ RSS](/packages/dobrosite-time-service/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (6)Versions (2)Used By (0)

Служба времени для PHP
======================

[](#служба-времени-для-php)

Предоставляет интерфейс и простую реализацию службы для получения текущего времени и часового пояса.

Чем плох распространённый подход с определением текущего времени с помощью `new DateTimeImmutable()`, `date_create()` и т. п.?

1. **Вы полагаетесь [глобальное состояние](https://habr.com/ru/company/vk/blog/454946/), которое не контролируете**. Достаточно какой-нибудь, используемой вами сторонней библиотеке изменить часовой пояс, и приведённые выше конструкции начнут возвращать время в другом часовом поясе. И это может происходить только при определённых условиях, что крайне трудно выявить при отладке.
2. **Такой код сложно тестировать**. Сравнение фактического и реального времени в тестах превращается в лотерею с заданием допусков промежутков времени. Либо вообще происходит отказ от проверки времени в тестах.

Одно из возможных решений — служба времени, к которой обращается ваш код, чтобы узнать текущее время. Пример:

```
