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

Breadcrumb

  1. Drupal Core 11.1.x
  2. DateTimeComparator.php

class DateTimeComparator

Hierarchy

  • class \SebastianBergmann\Comparator\Comparator
    • class \SebastianBergmann\Comparator\ArrayComparator extends \SebastianBergmann\Comparator\Comparator
      • class \SebastianBergmann\Comparator\ObjectComparator extends \SebastianBergmann\Comparator\ArrayComparator
        • class \SebastianBergmann\Comparator\DateTimeComparator extends \SebastianBergmann\Comparator\ObjectComparator

Expanded class hierarchy of DateTimeComparator

File

vendor/sebastian/comparator/src/DateTimeComparator.php, line 20

Namespace

SebastianBergmann\Comparator
View source
final class DateTimeComparator extends ObjectComparator {
    public function accepts(mixed $expected, mixed $actual) : bool {
        return $expected instanceof DateTimeInterface && $actual instanceof DateTimeInterface;
    }
    
    /**
     * @throws ComparisonFailure
     */
    public function assertEquals(mixed $expected, mixed $actual, float $delta = 0.0, bool $canonicalize = false, bool $ignoreCase = false, array &$processed = []) : void {
        assert($expected instanceof DateTimeInterface);
        assert($actual instanceof DateTimeInterface);
        $absDelta = abs($delta);
        $delta = new DateInterval(sprintf('PT%dS', $absDelta));
        $delta->f = $absDelta - floor($absDelta);
        $actualClone = (clone $actual)->setTimezone(new DateTimeZone('UTC'));
        $expectedLower = (clone $expected)->setTimezone(new DateTimeZone('UTC'))
            ->sub($delta);
        $expectedUpper = (clone $expected)->setTimezone(new DateTimeZone('UTC'))
            ->add($delta);
        if ($actualClone < $expectedLower || $actualClone > $expectedUpper) {
            throw new ComparisonFailure($expected, $actual, $this->dateTimeToString($expected), $this->dateTimeToString($actual), 'Failed asserting that two DateTime objects are equal.');
        }
    }
    
    /**
     * Returns an ISO 8601 formatted string representation of a datetime or
     * 'Invalid DateTimeInterface object' if the provided DateTimeInterface was not properly
     * initialized.
     */
    private function dateTimeToString(DateTimeInterface $datetime) : string {
        $string = $datetime->format('Y-m-d\\TH:i:s.uO');
        return $string ?: 'Invalid DateTimeInterface object';
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
ArrayComparator::indent private function
Comparator::$factory private property
Comparator::factory protected function
Comparator::setFactory public function
DateTimeComparator::accepts public function Overrides ObjectComparator::accepts
DateTimeComparator::assertEquals public function Overrides ObjectComparator::assertEquals
DateTimeComparator::dateTimeToString private function Returns an ISO 8601 formatted string representation of a datetime or
&#039;Invalid DateTimeInterface object&#039; if the provided DateTimeInterface was not properly
initialized.
ObjectComparator::toArray protected function 2
RSS feed
Powered by Drupal