formatDateTimeWithCustomPattern() публичный Метод

Format must obey syntax defined in CLDR specification, excluding unimplemented features (see documentation for DatesReader class). Format is remembered in this classes cache and won't be parsed again for some time.
См. также: Neos\Flow\I18n\Cldr\Reader\DatesReader
public formatDateTimeWithCustomPattern ( DateTimeInterface $dateTime, string $format, Locale $locale ) : string
$dateTime DateTimeInterface PHP object representing particular point in time
$format string Format string
$locale Neos\Flow\I18n\Locale A locale used for finding literals array
Результат string Formatted date / time. Unimplemented subformats in format string will be silently ignored
 /**
  * Render the supplied DateTime object as a formatted date.
  *
  * @param mixed $date either a \DateTime object or a string that is accepted by \DateTime constructor
  * @param string $format Format String which is taken to format the Date/Time if none of the locale options are set.
  * @param string $localeFormatType Whether to format (according to locale set in $forceLocale) date, time or datetime. Must be one of Neos\Flow\I18n\Cldr\Reader\DatesReader::FORMAT_TYPE_*'s constants.
  * @param string $localeFormatLength Format length if locale set in $forceLocale. Must be one of Neos\Flow\I18n\Cldr\Reader\DatesReader::FORMAT_LENGTH_*'s constants.
  * @param string $cldrFormat Format string in CLDR format (see http://cldr.unicode.org/translation/date-time)
  * @throws ViewHelperException
  * @return string Formatted date
  * @api
  */
 public function render($date = null, $format = 'Y-m-d', $localeFormatType = null, $localeFormatLength = null, $cldrFormat = null)
 {
     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, array($localeFormatType, $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($format);
     }
     return $output;
 }
 /**
  * @test
  * @dataProvider customFormatsAndFormattedDatetimes
  */
 public function formattingUsingCustomPatternWorks($format, array $parsedFormat, $expectedResult)
 {
     $mockDatesReader = $this->createMock(I18n\Cldr\Reader\DatesReader::class);
     $mockDatesReader->expects($this->once())->method('parseCustomFormat')->with($format)->will($this->returnValue($parsedFormat));
     $mockDatesReader->expects($this->once())->method('getLocalizedLiteralsForLocale')->with($this->sampleLocale)->will($this->returnValue($this->sampleLocalizedLiterals));
     $formatter = new I18n\Formatter\DatetimeFormatter();
     $formatter->injectDatesReader($mockDatesReader);
     $result = $formatter->formatDateTimeWithCustomPattern($this->sampleDateTime, $format, $this->sampleLocale);
     $this->assertEquals($expectedResult, $result);
 }