Example #1
0
 /**
  * {@inheritdoc}
  */
 public function convertToPHPValue($value, AbstractPlatform $platform)
 {
     if ($value === null) {
         return null;
     }
     return LocalDateTime::parse(str_replace(' ', 'T', $value));
 }
Example #2
0
 /**
  * {@inheritdoc}
  */
 public function expand($className, $value, array $options = [])
 {
     try {
         switch ($className) {
             case Duration::class:
                 return Duration::parse($value);
             case LocalDate::class:
                 return LocalDate::parse($value);
             case LocalTime::class:
                 return LocalTime::parse($value);
             case LocalDateTime::class:
                 return LocalDateTime::parse($value);
             case TimeZoneOffset::class:
                 return TimeZoneOffset::parse($value);
             case TimeZoneRegion::class:
                 return TimeZoneRegion::parse($value);
             case YearMonth::class:
                 return YearMonth::parse($value);
             case ZonedDateTime::class:
                 return ZonedDateTime::parse($value);
         }
     } catch (DateTimeParseException $e) {
         throw new ObjectNotConvertibleException($e->getMessage(), $e->getCode(), $e);
     }
     return null;
 }
Example #3
0
 /**
  * @dataProvider providerOf
  *
  * @param string  $localDateTime The local date-time as a string.
  * @param string  $timeZone      The time-zone as a string.
  * @param string  $offset        The expected time-zone offset of the result zoned date-time.
  * @param integer $shift         The expected shift applied to the date-time (when in a gap), in seconds.
  * @param integer $epochSecond   The expected epoch-second the result zoned date-time resolves to.
  * @param integer $nanoOfSecond  The expected nano-of-second of the result zoned date-time.
  */
 public function testOf($localDateTime, $timeZone, $offset, $shift, $epochSecond, $nanoOfSecond)
 {
     $localDateTime = LocalDateTime::parse($localDateTime);
     $timeZone = TimeZone::parse($timeZone);
     $offset = TimeZoneOffset::parse($offset);
     $expectedDateTime = $localDateTime->plusSeconds($shift);
     $zonedDateTime = ZonedDateTime::of($localDateTime, $timeZone);
     $this->assertInstanceOf(ZonedDateTime::class, $zonedDateTime);
     $this->assertLocalDateTimeEquals($expectedDateTime, $zonedDateTime->getDateTime());
     $this->assertTimeZoneEquals($timeZone, $zonedDateTime->getTimeZone());
     $this->assertTimeZoneEquals($offset, $zonedDateTime->getTimeZoneOffset());
     $this->assertSame($epochSecond, $zonedDateTime->getEpochSecond());
     $this->assertSame($nanoOfSecond, $zonedDateTime->getNano());
 }
Example #4
0
 /**
  * Returns the highest LocalDateTime among the given values.
  *
  * @param LocalDateTime ... $times The LocalDateTime objects to compare.
  *
  * @return LocalDateTime The latest LocalDateTime object.
  *
  * @throws DateTimeException If the array is empty.
  */
 public static function maxOf(LocalDateTime ...$times)
 {
     if (!$times) {
         throw new DateTimeException(__METHOD__ . ' does not accept less than 1 parameter.');
     }
     $max = LocalDateTime::min();
     foreach ($times as $time) {
         if ($time->isAfter($max)) {
             $max = $time;
         }
     }
     return $max;
 }
Example #5
0
 /**
  * @dataProvider providerIsAfter
  *
  * @param string  $dateTime1 The base date-time.
  * @param string  $dateTime2 The date-time to compare to.
  * @param boolean $isAfter   The expected result.
  */
 public function testIsAfter($dateTime1, $dateTime2, $isAfter)
 {
     $dateTime1 = LocalDateTime::parse($dateTime1);
     $dateTime2 = LocalDateTime::parse($dateTime2);
     $this->assertSame($isAfter, $dateTime1->isAfter($dateTime2));
 }
Example #6
0
 /**
  * {@inheritdoc}
  */
 public function getField($field)
 {
     return $this->localDateTime->getField($field);
 }
Example #7
0
 /**
  * @param LocalDateTime $expected The expected local date-time.
  * @param LocalDateTime $actual   The actual local date-time.
  */
 protected function assertLocalDateTimeEquals(LocalDateTime $expected, LocalDateTime $actual)
 {
     $this->assertTrue($actual->isEqualTo($expected), "{$actual} != {$expected}");
 }