Вход Регистрация
Файл: vendor/phpunit/php-timer/src/Duration.php
Строк: 153
<?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 SebastianBergmannTimer;

use function 
floor;
use function 
sprintf;

/**
 * @psalm-immutable
 */
final class Duration
{
    
/**
     * @var float
     */
    
private $nanoseconds;

    
/**
     * @var int
     */
    
private $hours;

    
/**
     * @var int
     */
    
private $minutes;

    
/**
     * @var int
     */
    
private $seconds;

    
/**
     * @var int
     */
    
private $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;
    }
}
Онлайн: 0
Реклама