/**
  * @param string $string
  * @return DateTimeBoundary
  */
 protected static function parseBoundary(string $string) : Boundary
 {
     list($elementString, $state) = self::parseBoundaryDataFromString($string);
     /** @var DateTime $dateTime */
     $dateTime = DateTime::from($elementString);
     return new DateTimeBoundary($dateTime, $state);
 }
 /**
  * @param \DateTime $date
  * @return DateTimeInterval
  */
 protected static function buildWholeDayInterval(\DateTime $date) : DateTimeInterval
 {
     /** @var DateTime $start */
     $start = DateTime::from($date);
     $start->setTime(0, 0, 0);
     /** @var DateTime $ends */
     $ends = DateTime::from($date);
     $ends->setTime(23, 59, 59);
     $thisDayInterval = new DateTimeInterval(new DateTimeBoundary($start, Boundary::CLOSED), new DateTimeBoundary($ends, Boundary::CLOSED));
     return $thisDayInterval;
 }
 /**
  * @param \DateTime|string|int $element
  * @param bool $state
  * @return DateTimeBoundary
  */
 public static function create($element, bool $state) : DateTimeBoundary
 {
     /** @var DateTime $element */
     $element = DateTime::from($element);
     return new DateTimeBoundary($element, $state);
 }
 /**
  * @param \DateTime $modified
  */
 private function setFromDateTime(\DateTime $modified)
 {
     $this->setSeconds((double) $modified->format('s'));
     $this->setMinutes((int) $modified->format('i'));
     $this->setHours((int) $modified->format('H'));
 }