/**
  * @param InputValue $input
  * @throws ValidationException
  */
 public function process(InputValue $input)
 {
     if ($this->getOption('convert') === false && !$input->getValue() instanceof \DateTime) {
         throw new ValidationException('value is not a DateTime object');
     }
     $input->replace(function ($value) {
         return Utils::toDateObject($value);
     });
 }
 /**
  * @param InputValue $input
  * @throws ValidationException
  */
 public function process(InputValue $input)
 {
     $isDate = new IsDate();
     $isDate->process($input);
     $date = Utils::toDateObject($input->getValue());
     $toCompare = $this->getOption('time');
     if ($date >= $toCompare) {
         throw new ValidationException('Date should be before ' . $toCompare->format(\DateTime::ISO8601));
     }
 }
 /**
  * @param InputValue $input
  * @throws ValidationException
  */
 public function process(InputValue $input)
 {
     $isDate = new IsDate();
     $isDate->process($input);
     $date = Utils::toDateObject($input->getValue());
     $time1 = $this->getOption('time1');
     $time2 = $this->getOption('time2');
     if ($date < $time1 || $date > $time2) {
         throw new ValidationException('Date should be between ' . $time1->format(\DateTime::ISO8601) . ' and ' . $time2->format(\DateTime::ISO8601));
     }
 }