innmind/time

Time manipulation

Installs: 304

Dependents: 3

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

pkg:composer/innmind/time

1.0.0 2026-01-17 17:24 UTC

This package is auto-updated.

Last update: 2026-01-17 17:26:27 UTC


README

Build Status codecov Type Coverage

This library allows you to handle time down to the millisecond. The point was to also be explicit for every component of dates, this is why every php magic strings have been converted into objects.

All objects are immutable.

Installation

composer require innmind/time

Usage

Accessing time

use Innmind\Time\{
    Clock,
    Point,
    Format,
};
use Innmind\Immutable\Attempt;

$clock = Clock::live();
$now = $clock->now(); // return an instance of Point
echo $now->toString(); // 2016-10-11T12:17:30.123456+02:00

$epoch = $clock->at(
    '1970-01-01T00:00:00.000000+00:00',
    Format::iso8601(),
); // Attempt<Point>

Here we reference 2 points in time, the first is the exact moment we call now down to the microsecond and the second one is the epoch time.

The method at() accepts any string that is allowed by \DateTimeImmutable.

Halt process

use Innmind\Time\{
    Halt
    Period,
};

function yourApp(Halt $halt): void
{
    // do something
    $halt(Period::minute(42))->unwrap();
    // do some more
}

yourApp(Halt::new());

This example will halt your program for 42 minutes.

Logging

use Innmind\Time\Halt;
use Psr\Log\LoggerInterface;

$halt = Halt::logger($halt, /** an instance of LoggerInterface */);

## Documentation

Full documentation is available at <https://innmind.org/time/>.