Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x

Duration.php

Same filename in this branch
  1. 11.1.x vendor/phpunit/phpunit/src/Event/Value/Telemetry/Duration.php
  2. 11.1.x vendor/google/protobuf/src/Google/Protobuf/Duration.php
  3. 11.1.x vendor/google/protobuf/src/GPBMetadata/Google/Protobuf/Duration.php

Namespace

SebastianBergmann\Timer

File

vendor/phpunit/php-timer/src/Duration.php

View source
<?php

declare (strict_types=1);

/*
 * This file is part of phpunit/php-timer.
 *
 * (c) Sebastian Bergmann <sebastian@phpunit.de>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
namespace SebastianBergmann\Timer;

use function floor;
use function sprintf;

/**
 * @psalm-immutable
 */
final class Duration {
    private readonly float $nanoseconds;
    private readonly int $hours;
    private readonly int $minutes;
    private readonly int $seconds;
    private readonly int $milliseconds;
    public static function fromMicroseconds(float $microseconds) : self {
        return new self($microseconds * 1000);
    }
    public static function fromNanoseconds(float $nanoseconds) : self {
        return new self($nanoseconds);
    }
    private function __construct(float $nanoseconds) {
        $this->nanoseconds = $nanoseconds;
        $timeInMilliseconds = $nanoseconds / 1000000;
        $hours = floor($timeInMilliseconds / 60 / 60 / 1000);
        $hoursInMilliseconds = $hours * 60 * 60 * 1000;
        $minutes = floor($timeInMilliseconds / 60 / 1000) % 60;
        $minutesInMilliseconds = $minutes * 60 * 1000;
        $seconds = floor(($timeInMilliseconds - $hoursInMilliseconds - $minutesInMilliseconds) / 1000);
        $secondsInMilliseconds = $seconds * 1000;
        $milliseconds = $timeInMilliseconds - $hoursInMilliseconds - $minutesInMilliseconds - $secondsInMilliseconds;
        $this->hours = (int) $hours;
        $this->minutes = $minutes;
        $this->seconds = (int) $seconds;
        $this->milliseconds = (int) $milliseconds;
    }
    public function asNanoseconds() : float {
        return $this->nanoseconds;
    }
    public function asMicroseconds() : float {
        return $this->nanoseconds / 1000;
    }
    public function asMilliseconds() : float {
        return $this->nanoseconds / 1000000;
    }
    public function asSeconds() : float {
        return $this->nanoseconds / 1000000000;
    }
    public function asString() : string {
        $result = '';
        if ($this->hours > 0) {
            $result = sprintf('%02d', $this->hours) . ':';
        }
        $result .= sprintf('%02d', $this->minutes) . ':';
        $result .= sprintf('%02d', $this->seconds);
        if ($this->milliseconds > 0) {
            $result .= '.' . sprintf('%03d', $this->milliseconds);
        }
        return $result;
    }

}

Classes

Title Deprecated Summary
Duration @psalm-immutable

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal