Source of file DateFormat.php
Size: 3,624 Bytes - Last Modified: 2014-03-12T23:21:18+01:00
/home/theseer/Downloads/ZendFramework-2.3.0/library/Zend/I18n/View/Helper/DateFormat.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 | <?php /** * Zend Framework (http://framework.zend.com/) * * @link http://github.com/zendframework/zf2 for the canonical source repository * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ namespace Zend\I18n\View\Helper; use DateTime; use IntlDateFormatter; use Locale; use Zend\I18n\Exception; use Zend\View\Helper\AbstractHelper; /** * View helper for formatting dates. */ class DateFormat extends AbstractHelper { /** * Locale to use instead of the default * * @var string */ protected $locale; /** * Timezone to use * * @var string */ protected $timezone; /** * Formatter instances * * @var array */ protected $formatters = array(); /** * @throws Exception\ExtensionNotLoadedException if ext/intl is not present */ public function __construct() { if (!extension_loaded('intl')) { throw new Exception\ExtensionNotLoadedException(sprintf( '%s component requires the intl PHP extension', __NAMESPACE__ )); } } /** * Format a date * * @param DateTime|int|array $date * @param int $dateType * @param int $timeType * @param string $locale * @param string|null $pattern * @return string */ public function __invoke( $date, $dateType = IntlDateFormatter::NONE, $timeType = IntlDateFormatter::NONE, $locale = null, $pattern = null ) { if ($locale === null) { $locale = $this->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 ); } 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; } } |