Класс Clock
Класс Clock из компонента symfony/clock предоставляет удобный интерфейс для работы с текущим временем. Он позволяет получать текущий момент времени в виде объекта DateTimeImmutable или DatePoint, приостанавливать выполнение скрипта на заданное количество секунд, а также создавать новый экземпляр часов с другим часовым поясом. Класс реализует интерфейс ClockInterface и является частью утилит Symfony.
Основные методы класса: now возвращает текущее время, sleep приостанавливает выполнение, withTimeZone создаёт новый экземпляр с указанным часовым поясом.
Синтаксис
use Symfony\Component\Clock\Clock;
$clock = new Clock();
$clock->now(): DateTimeImmutable
$clock->sleep(float $seconds): void
$clock->withTimeZone(DateTimeZone|string $timezone): static
Пример
Давайте получим текущее время с помощью метода now:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Clock\Clock;
class ClockController extends AbstractController
{
#[Route('/clock/now', name: 'clock_now')]
public function now(): Response
{
$clock = new Clock();
$current = $clock->now();
return new Response($current->format('Y-m-d H:i:s'));
}
}
?>
Результат выполнения кода:
"2026-09-14 12:34:56"
Пример
Давайте приостановим выполнение скрипта на 2 секунды с помощью метода sleep:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Clock\Clock;
class ClockController extends AbstractController
{
#[Route('/clock/sleep', name: 'clock_sleep')]
public function sleep(): Response
{
$clock = new Clock();
$before = $clock->now()->format('H:i:s');
$clock->sleep(2);
$after = $clock->now()->format('H:i:s');
return new Response($before . ' -> ' . $after);
}
}
?>
Результат выполнения кода:
"12:34:56 -> 12:34:58"
Пример
Давайте создадим часы с часовым поясом 'Europe/Paris' с помощью метода withTimeZone:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Clock\Clock;
class ClockController extends AbstractController
{
#[Route('/clock/timezone', name: 'clock_timezone')]
public function timezone(): Response
{
$clock = new Clock();
$parisClock = $clock->withTimeZone('Europe/Paris');
$current = $parisClock->now();
return new Response($current->format('Y-m-d H:i:s e'));
}
}
?>
Результат выполнения кода:
"2026-09-14 14:34:56 Europe/Paris"
Смотрите также
-
метод
now,
который возвращает текущее время -
метод
sleep,
который приостанавливает выполнение скрипта -
метод
withTimeZone,
который создаёт часы с другим часовым поясом -
класс
DatePoint,
который представляет собой точку во времени