merged branch alefranz/patch-2 (PR #575)

Commits
-------

b295274 fix Date Format filter: DateInterval does not provide setTimezone()

Discussion
----------

fix Date Format filter: DateInterval does not provide setTimezone()
This commit is contained in:
Fabien Potencier
2011-12-30 08:50:36 +01:00
+16 -14
View File
@@ -313,22 +313,24 @@ function twig_date_format_filter(Twig_Environment $env, $date, $format = null, $
$format = $env->getExtension('core')->getDateFormat();
}
if (!$date instanceof DateTime && !$date instanceof DateInterval) {
$asString = (string) $date;
if (ctype_digit($asString) || (!empty($asString) && '-' === $asString[0] && ctype_digit(substr($asString, 1)))) {
$date = new DateTime('@'.$date);
$date->setTimezone(new DateTimeZone(date_default_timezone_get()));
} else {
$date = new DateTime($date);
}
}
if (null !== $timezone) {
if (!$timezone instanceof DateTimeZone) {
$timezone = new DateTimeZone($timezone);
if (!$date instanceof DateInterval) {
if (!$date instanceof DateTime) {
$asString = (string) $date;
if (ctype_digit($asString) || (!empty($asString) && '-' === $asString[0] && ctype_digit(substr($asString, 1)))) {
$date = new DateTime('@'.$date);
$date->setTimezone(new DateTimeZone(date_default_timezone_get()));
} else {
$date = new DateTime($date);
}
}
$date->setTimezone($timezone);
if (null !== $timezone) {
if (!$timezone instanceof DateTimeZone) {
$timezone = new DateTimeZone($timezone);
}
$date->setTimezone($timezone);
}
}
return $date->format($format);