public function hydrate($value)
    {
        if ($value === '' || $value === null) {
            return;
        }

        if ($this->timezone) {
            $hydrated = $this->useImmutable ?
                \DateTimeImmutable::createFromFormat($this->format, $value, $this->timezone) :
                \DateTime::createFromFormat($this->format, $value, $this->timezone);
        } else {
            $hydrated = $this->useImmutable ?
                \DateTimeImmutable::createFromFormat($this->format, $value) :
                \DateTime::createFromFormat($this->format, $value);
        }

        return $hydrated ?: $value;
    }