/** * @param string $type * @param $value * * @return null|DateTime */ private function parseDate(string $type, $value) { try { switch ($type) { case 'datetime': $datetime = DateTime::createFromFormat('Y-m-d\\TH:i:s', $value); break; case 'date': $datetime = Date::createFromFormat('Y-m-d', $value); break; case 'time': $datetime = Time::createFromFormat('H:i:s', $value); break; default: throw new \InvalidArgumentException(sprintf("Invalid parse date type '%s'", $type)); } } catch (\Exception $exception) { return null; } return $datetime; }