Метод now класса Clock
Метод now класса Clock возвращает текущий момент времени
в виде неизменяемого объекта DateTimeImmutable. Метод не принимает
параметров и всегда возвращает актуальное время с учётом часового пояса,
заданного в объекте часов. Этот метод удобно использовать в сервисах,
которые должны получать текущее время, чтобы код оставался тестируемым.
Синтаксис
public function now(): DateTimeImmutable
Пример
Давайте получим текущее время с помощью метода now:
<?php
namespace AppService;
use SymfonyComponentClockClockInterface;
class TimeService
{
public function __construct(
private ClockInterface $clock
) {
}
public function getCurrentTime(): string
{
$now = $this->clock->now();
return $now->format('Y-m-d H:i:s');
}
}
?>
Результат выполнения кода:
"2024-01-15 12:30:45"
Пример
Давайте сравним текущее время с заданной датой:
<?php
namespace AppService;
use SymfonyComponentClockClockInterface;
class TimeService
{
public function __construct(
private ClockInterface $clock
) {
}
public function isPast(string $date): bool
{
$now = $this->clock->now();
$target = new DateTimeImmutable($date);
return $now > $target;
}
}
?>
Результат выполнения кода для даты '2020-01-01':
true
Пример
Давайте выведем текущее время в контроллере:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentClockClockInterface;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class TimeController extends AbstractController
{
#[Route('/time', name: 'time_index')]
public function index(ClockInterface $clock): Response
{
$now = $clock->now();
return new Response($now->format('H:i:s'));
}
}
?>
Результат выполнения кода:
12:30:45
Смотрите также
-
класс
Clock,
который предоставляет текущее время -
метод
sleep,
который приостанавливает выполнение на заданное время -
метод
withTimeZone,
который меняет часовой пояс часов -
класс
DatePoint,
который расширяет возможности работы с датой