fix Date Format filter: DateInterval does not provide setTimezone()
authoralefranz <alessio.alefranz@gmail.com>
Thu, 29 Dec 2011 18:46:53 +0000 (19:46 +0100)
committeralefranz <alessio.alefranz@gmail.com>
Thu, 29 Dec 2011 18:46:53 +0000 (19:46 +0100)
lib/Twig/Extension/Core.php

index 126ff97..f521523 100644 (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 (!$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);
+            }
         }
-    }
 
-    if (null !== $timezone) {
-        if (!$timezone instanceof DateTimeZone) {
-            $timezone = new DateTimeZone($timezone);
-        }
+        if (null !== $timezone) {
+            if (!$timezone instanceof DateTimeZone) {
+                $timezone = new DateTimeZone($timezone);
+            }
 
-        $date->setTimezone($timezone);
+            $date->setTimezone($timezone);
+        }
     }
 
     return $date->format($format);