getLocale(); } $timezone = $this->getTimezone(); $formatterId = md5($dateType . "\0" . $timeType . "\0" . $locale ."\0" . $pattern); if (!isset($this->formatters[$formatterId])) { $this->formatters[$formatterId] = new IntlDateFormatter( $locale, $dateType, $timeType, $timezone, IntlDateFormatter::GREGORIAN, $pattern ); } // DateTime support for IntlDateFormatter::format() was only added in 5.3.4 if ($date instanceof DateTime && (PHP_VERSION_ID < 50304)) { $date = $date->getTimestamp(); } return $this->formatters[$formatterId]->format($date); } /** * Set locale to use instead of the default * * @param string $locale * @return DateFormat */ public function setLocale($locale) { $this->locale = (string) $locale; return $this; } /** * Get the locale to use * * @return string|null */ public function getLocale() { if ($this->locale === null) { $this->locale = Locale::getDefault(); } return $this->locale; } /** * Set timezone to use instead of the default * * @param string $timezone * @return DateFormat */ public function setTimezone($timezone) { $this->timezone = (string) $timezone; // The method setTimeZoneId is deprecated as of PHP 5.5.0 $setTimeZoneMethodName = (PHP_VERSION_ID < 50500) ? 'setTimeZoneId' : 'setTimeZone'; foreach ($this->formatters as $formatter) { $formatter->$setTimeZoneMethodName($this->timezone); } return $this; } /** * Get the timezone to use * * @return string|null */ public function getTimezone() { if (!$this->timezone) { return date_default_timezone_get(); } return $this->timezone; } }