/**
  * Constructor.
  *
  * @see BaseDateTimeTransformer::formats for available format options
  *
  * @param string $inputTimezone  The name of the input timezone
  * @param string $outputTimezone The name of the output timezone
  * @param int    $dateFormat     The date format
  * @param int    $timeFormat     The time format
  * @param int    $calendar       One of the \IntlDateFormatter calendar constants
  * @param string $pattern        A pattern to pass to \IntlDateFormatter
  *
  * @throws UnexpectedTypeException If a format is not supported or if a timezone is not a string
  */
 public function __construct(string $inputTimezone = null, string $outputTimezone = null, int $dateFormat = null, int $timeFormat = null, int $calendar = \IntlDateFormatter::GREGORIAN, string $pattern = null)
 {
     parent::__construct($inputTimezone, $outputTimezone);
     if (null === $dateFormat) {
         $dateFormat = \IntlDateFormatter::MEDIUM;
     }
     if (null === $timeFormat) {
         $timeFormat = \IntlDateFormatter::SHORT;
     }
     if (!in_array($dateFormat, self::$formats, true)) {
         throw new UnexpectedTypeException($dateFormat, self::$formats);
     }
     if (!in_array($timeFormat, self::$formats, true)) {
         throw new UnexpectedTypeException($timeFormat, self::$formats);
     }
     $this->dateFormat = $dateFormat;
     $this->timeFormat = $timeFormat;
     $this->calendar = $calendar;
     $this->pattern = $pattern ?? '';
 }
 /**
  * Transforms a \DateTime instance to a string.
  *
  * @see \DateTime::format() for supported formats
  *
  * @param string $inputTimezone  The name of the input timezone
  * @param string $outputTimezone The name of the output timezone
  * @param string $format         The date format
  *
  * @throws UnexpectedTypeException if a timezone is not a string
  */
 public function __construct($inputTimezone = null, $outputTimezone = null, $format = 'Y-m-d H:i:s')
 {
     parent::__construct($inputTimezone, $outputTimezone);
     $this->parseFormat = $format;
 }