format = (string) $format; $this->timezone = $timezone; } /** * {@inheritDoc} * * Converts to date time string * * @param mixed|DateTime $value * * @return mixed|string */ public function extract($value) { if ($value instanceof DateTime) { return $value->format($this->format); } return $value; } /** * Converts date time string to DateTime instance for injecting to object * * {@inheritDoc} * * @param mixed|string $value * * @return mixed|DateTime */ public function hydrate($value) { if ($value === '' || $value === null) { return; } if ($this->timezone) { $hydrated = DateTime::createFromFormat($this->format, $value, $this->timezone); } else { $hydrated = DateTime::createFromFormat($this->format, $value); } return $hydrated ?: $value; } }