dcarbone/gotime
Go-inspired time utilities for PHP 8.1+: a Duration type (parse/format like 5s, JSON as nanoseconds) plus helpers to generate DateInterval specs for DateTime add/sub. Includes a Time wrapper around DateTime aiming for Go time.Time-style APIs.
Golang-inspired time helpers for PHP 8.2+.
composer require dcarbone/gotime
<?php
use DCarbone\Go\Time;
$t = Time::Now();
$d = Time::ParseDuration('1h30m');
echo $t, PHP_EOL; // formatted timestamp
echo $d, PHP_EOL; // 1h30m0s
echo $d->Nanoseconds(), PHP_EOL; // 5400000000000
This package exposes a static facade class, DCarbone\Go\Time, plus several value objects under DCarbone\Go\Time\*.
DCarbone\Go\Time\Duration)Duration stores elapsed time as a signed integer count of nanoseconds.
Common construction patterns:
use DCarbone\Go\Time;
$a = new Time\Duration(5 * Time::Second);
$b = Time::ParseDuration('5s');
$c = Time::Duration('1h2m3.5s'); // cast helper
Supported ParseDuration() units:
nsus, µs, μsmssmhKey methods:
Nanoseconds(), Microseconds(), Milliseconds(), Seconds(), Minutes(), Hours()Truncate(Duration $m), Round(Duration $m)Compare(Duration $other) (-1, 0, 1)DateInterval() / IntervalSpec()__toString() (Go-like formatting, e.g. 500ms, 1h2m3.004s)jsonSerialize() (raw nanosecond integer)DCarbone\Go\Time\Time)Time\Time extends \DateTime and adds Go-style helpers.
Primary constructors:
use DCarbone\Go\Time;
$zero = Time::New(); // Unix epoch
$now = Time::Now(); // current time
Comparison helpers:
Before(Time $t), After(Time $t), Equal(Time $t)BeforeDateTime(\DateTimeInterface $dt), AfterDateTime(...), EqualDateTime(...)Unix helpers:
Unix()UnixNano()UnixNanoDuration()Date/time part helpers:
Year(), Month(), Day(), Weekday()Hour(), Minute(), Second(), Nanosecond()IsZero()Duration arithmetic:
AddDuration(Duration $d)SubDuration(Duration $d)DCarbone\Go\Time)Nanosecond, Microsecond, Millisecond, Second, Minute, HourNew()Now()ParseDuration(string $s)Duration(null|string|int|float|Duration|\DateInterval $input)CompareDuration(Duration $d1, Duration $d2)ZeroDuration()Since(Time\Time $t)SinceDateTime(\DateTimeInterface $dt)Until(Time\Time $t)UntilDateTime(\DateTimeInterface $dt)Time\Month (month ordinal/name helpers)Time\Weekday (weekday ordinal/name helpers)Time\IntervalSpec (intermediate duration-to-interval representation)Time\DateInterval (extends \DateInterval, including fractional seconds support)Duration(\DateInterval $input) converts years/months using average-hour constants, so calendar-month/year conversion is approximate../vendor/bin/phpunit --display-deprecations --display-phpunit-deprecations
How can I help you explore Laravel packages today?