1. Go to this page and download the library: Download fast-forward/clock library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
fast-forward / clock example snippets
declare(strict_types=1);
use FastForward\Clock\SystemClock;
$clock = new SystemClock();
echo $clock->now()->format(DATE_ATOM) . PHP_EOL;
declare(strict_types=1);
use FastForward\Clock\SystemClock;
$clock = new SystemClock('America/Sao_Paulo');
echo $clock->now()->format('Y-m-d H:i:s P') . PHP_EOL;
declare(strict_types=1);
use FastForward\Clock\ServiceProvider\ClockServiceProvider;
use Psr\Clock\ClockInterface;
use function FastForward\Container\container;
$container = container(new ClockServiceProvider());
$clock = $container->get(ClockInterface::class);
echo $clock->now()->format(DATE_ATOM) . PHP_EOL;
declare(strict_types=1);
use FastForward\Clock\FrozenClock;
$clock = new FrozenClock('2026-04-07 10:00:00');
echo $clock->now()->format(DATE_ATOM) . PHP_EOL;
// Output: 2026-04-07T10:00:00+00:00
declare(strict_types=1);
use FastForward\Clock\FrozenClock;
// From a DateTimeImmutable
$clock1 = new FrozenClock(new DateTimeImmutable('2026-04-07 10:00:00'));
// From a string
$clock2 = new FrozenClock('next Monday');
// From a timestamp
$clock3 = new FrozenClock(1775640000);
// From another ClockInterface
$clock4 = new FrozenClock(new SystemClock('America/New_York'));
declare(strict_types=1);
use FastForward\Clock\ServiceProvider\ClockServiceProvider;
use FastForward\Clock\FrozenClock;
use FastForward\Container\ServiceProvider\ArrayServiceProvider;
use Psr\Clock\ClockInterface;
use Psr\Container\ContainerInterface;
use function FastForward\Container\container;
$frozenClock = new FrozenClock('2026-04-07 10:00:00');
$testProvider = new ArrayServiceProvider([
FrozenClock::class => static fn(ContainerInterface $container): FrozenClock => $frozenClock,
ClockInterface::class => static fn(ContainerInterface $container): FrozenClock => $container->get(FrozenClock::class),
]);
$container = container($testProvider, new ClockServiceProvider());
$clock = $container->get(ClockInterface::class);
echo $clock->now()->format(DATE_ATOM) . PHP_EOL;
public function __construct(DateTimeZone|string|null $timezone = null)
public function __construct(DateTimeInterface|ClockInterface|string|int|float $clock = 'now')
use FastForward\Config\Config;
use FastForward\Clock\ServiceProvider\ClockServiceProvider;
use function FastForward\Container\container;
$config = new Config([
DateTimeZone::class => 'America/Sao_Paulo',
]);
$container = container($config, new ClockServiceProvider());
declare(strict_types=1);
use FastForward\Clock\FrozenClock;
use Psr\Clock\ClockInterface;
final class StubbedClock implements ClockInterface
{
public function __construct(private ClockInterface $clock)
{
}
public function now(): \DateTimeImmutable
{
return $this->clock->now();
}
public static function create(string $time): self
{
return new self(new FrozenClock($time));
}
}