src/App/Util/LocaleDateFormatter.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Util;
  3. use DateTimeInterface;
  4. use IntlDateFormatter;
  5. /**
  6.  *
  7.  */
  8. final class LocaleDateFormatter extends IntlDateFormatter
  9. {
  10.     /**
  11.      * @param string $locale
  12.      * @param int|null $dateType
  13.      * @param int|null $timeType
  14.      * @param $timezone
  15.      * @param $calendar
  16.      * @param string|null $pattern
  17.      */
  18.     public function __construct(
  19.         string $locale,
  20.         ?int $dateType,
  21.         ?int $timeType,
  22.         $timezone null,
  23.         $calendar null,
  24.         ?string $pattern ''
  25.     )
  26.     {
  27.         // make sure the locale is one we support
  28.         if ( ! Locales::isLocale($locale)) {
  29.             throw new \RuntimeException(sprintf(
  30.                 'Locale "%s" is not supported by the system.',
  31.                 $locale
  32.             ));
  33.         }
  34.         // call parent constructor
  35.         parent::__construct($locale$dateType$timeType$timezone$calendar$pattern);
  36.     }
  37.     /**
  38.      * @param DateTimeInterface $timestamp
  39.      * @param string $pattern
  40.      * @return false|string
  41.      */
  42.     public function formatWithPattern(DateTimeInterface $timestampstring $pattern)
  43.     {
  44.         // obtain the old patter, if any
  45.         $previous $this->getPattern() ?: null;
  46.         // set pattern using the new one
  47.         $this->setPattern($pattern);
  48.         // do the formatting
  49.         $formatted $this->format($timestamp);
  50.         // restore the old pattern
  51.         $this->setPattern((string) $previous);
  52.         return $formatted;
  53.     }
  54. }