public function render()
    {
        $date = $this->arguments['date'];
        $cldrFormat = $this->arguments['cldrFormat'];

        if ($date === null) {
            $date = $this->renderChildren();
            if ($date === null) {
                return '';
            }
        }
        if (!$date instanceof \DateTimeInterface) {
            try {
                $date = new \DateTime($date);
            } catch (\Exception $exception) {
                throw new ViewHelperException('"' . $date . '" could not be parsed by \DateTime constructor.', 1241722579, $exception);
            }
        }

        $useLocale = $this->getLocale();
        if ($useLocale !== null) {
            try {
                if ($cldrFormat !== null) {
                    $output = $this->datetimeFormatter->formatDateTimeWithCustomPattern($date, $cldrFormat, $useLocale);
                } else {
                    $output = $this->datetimeFormatter->format($date, $useLocale, [$this->arguments['localeFormatType'], $this->arguments['localeFormatLength']]);
                }
            } catch (I18nException $exception) {
                throw new ViewHelperException(sprintf('An error occurred while trying to format the given date/time: "%s"', $exception->getMessage()), 1342610987, $exception);
            }
        } else {
            $output = $date->format($this->arguments['format']);
        }

        return $output;
    }