1. Go to this page and download the library: Download bakame/tokei 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/ */
bakame / tokei example snippets
Time::at(int $hour = 0, int $minute = 0, int $second = 0, int $microsecond = 0): Time;
Time::parse(string $value, string $separator = ':'): ?Time
Time::fromUnitOfDay(int $value, Unit $unit): Time
Time::toUnitOfDay(Unit $unit): float; // returns the time value according to the provided
Time::toString(): string
Time::toLocaleString(string $locale, ?DateTimeZone $timezone = null): string
Time::fromDate(DateTimeInterface $datetime): Time
Time::applyTo(DateTimeInterface $datetime): DateTimeImmutable;
use Bakame\Tokei\Time;
use Carbon\Carbon;
use Carbon\CarbonImmutable;
$time = Time::fromDate(new DateTime('2025-12-27 23:00', new DateTimeZone('Africa/Nairobi'))); // 23:00
$newDate = $time->applyTo(CarbonImmutable::parse('2025-02-23'));
$newDate->toDateTimeString(); // returns '2025-02-23 23:00'
$newDate::class; // returns Carbon\CarbonImmutable
$altDate = $time->applyTo(Carbon::parse('2025-02-23'));
$altDate->toDateTimeString(); // returns '2025-02-23 23:00'
$altDate::class; // returns DateTimeImmutable
use Bakame\Tokei\Duration;
$durationA = Duration::of(hours: 2, seconds:59);
$durationB = Duration::fromNotation('P2WT3H', DurationNotation::Iso8601); //2 weeks and 3 hours
$durationC = Duration::fromDateInterval(new DateInterval('PT23M3S'));
$duration = Duration::fromNotation('[10:00:00, 12:00:00)', DurationNotation::Iso800000);
// throws a Bakame\Tokei\InvalidDuration exception
// because of the presence of the Y component
$durationB->hours; // returns 1
$durationB->minutes; // returns 1
$durationB->seconds; // returns 1
$durationB->microseconds; // returns 234_000
$durationB->sign; // returns 1
$durationB->daysCount; // returns the absolute number of complete 24-hour days contained in the duration
$durationB->weeksCount; // returns the absolute number of complete weeks contained in the duration
$durationB->isEmpty() // returns true when the duration is zero, false otherhwise
$duration = Duration::of(microseconds: 3_661_234_000);
$duration->toDateInterval(); // returns DateInterval
$durationB->total(Unit::Microsecond); // returns the full duration in microseconds
$durationB->total(Unit::Hours); // returns the full duration in hours
Duration::abs(): Duration
Duration::negated(): Duration
Duration::sum(Duration ...$duration): Duration
Duration::increment(int $weeks = 0, int $days = 0, int $hours = 0, int $minutes = 0, int $seconds = 0, int $microseconds = 0): Duration
Duration::multipliedBy(int $factor): Duration
Duration::dividedBy(int $factor): Duration
Duration::roundTo(Unit $precision, RoundingMode $roundingMode): Duration
Duration::clamp(Duration $min, Duration $max): Duration
enum IntervalType
{
case Linear; // returns true (start < end)
case Overflow; // returns false (start > end)
case Circular; // returns false (start === end and duration is 'P1D')
case Collapsed; // returns false (start === end and duration is 'PT0S')
}
enum IntervalNotation
{
case Iso8601StartDuration;
case Iso8601DurationEnd;
case Iso8601StartEnd;
case Iso80000;
case Bourbaki;
}