added setTimezone to allow globally overriding the timezone when formating dates

This commit is contained in:
Matt Lehner
2012-02-14 14:52:51 -05:00
parent 5bba149706
commit 56997536b9
+29
View File
@@ -16,6 +16,7 @@ class Twig_Extension_Core extends Twig_Extension
{
protected $dateFormats = array('F j, Y H:i', '%d days');
protected $numberFormat = array(0, '.', ',');
protected $timezone = null;
/**
* Sets the default format to be used by the date filter.
@@ -44,6 +45,30 @@ class Twig_Extension_Core extends Twig_Extension
return $this->dateFormats;
}
/**
* Sets the default timezone to be used by the date filter.
*
* @param DateTimeZone|string $timezone The default timezone string or a DateTimeZone object
*/
public function setTimezone($timezone)
{
if ($timezone instanceof DateTimeZone) {
$this->timezone = $timezone;
} else {
$this->timezone = new DateTimeZone($timezone);
}
}
/**
* Gets the default timezone to be used by the date filter.
*
* @return DateTimeZone The default timezone currently in use
*/
public function getTimezone()
{
return $this->timezone;
}
/**
* Sets the default format to be used by the number_format filter.
*
@@ -342,6 +367,10 @@ function twig_date_format_filter(Twig_Environment $env, $date, $format = null, $
$date->setTimezone($timezone);
}
else if (($timezone = $env->getExtension('core')->getTimezone()) instanceof DateTimeZone)
{
$date->setTimezone($timezone);
}
return $date->format($format);
}