Fixed the date filter's timezone not being set correctly with strings

This commit is contained in:
Gaël Bouchez
2014-07-16 09:29:47 +02:00
parent 5fd428ed76
commit 44aaa5b228
+10 -10
View File
@@ -496,23 +496,23 @@ function twig_date_modify_filter(Twig_Environment $env, $date, $modifier)
function twig_date_converter(Twig_Environment $env, $date = null, $timezone = null) function twig_date_converter(Twig_Environment $env, $date = null, $timezone = null)
{ {
// determine the timezone // determine the timezone
if (!$timezone) { if (false !== $timezone) {
$defaultTimezone = $env->getExtension('core')->getTimezone(); if (null === $timezone) {
} elseif (!$timezone instanceof DateTimeZone) { $timezone = $env->getExtension('core')->getTimezone();
$defaultTimezone = new DateTimeZone($timezone); } elseif (!$timezone instanceof DateTimeZone) {
} else { $timezone = new DateTimeZone($timezone);
$defaultTimezone = $timezone; }
} }
// immutable dates // immutable dates
if ($date instanceof DateTimeImmutable) { if ($date instanceof DateTimeImmutable) {
return false !== $timezone ? $date->setTimezone($defaultTimezone) : $date; return false !== $timezone ? $date->setTimezone($timezone) : $date;
} }
if ($date instanceof DateTime || $date instanceof DateTimeInterface) { if ($date instanceof DateTime || $date instanceof DateTimeInterface) {
$date = clone $date; $date = clone $date;
if (false !== $timezone) { if (false !== $timezone) {
$date->setTimezone($defaultTimezone); $date->setTimezone($timezone);
} }
return $date; return $date;
@@ -523,9 +523,9 @@ function twig_date_converter(Twig_Environment $env, $date = null, $timezone = nu
$date = '@'.$date; $date = '@'.$date;
} }
$date = new DateTime($date, $defaultTimezone); $date = new DateTime($date, $env->getExtension('core')->getTimezone());
if (false !== $timezone) { if (false !== $timezone) {
$date->setTimezone($defaultTimezone); $date->setTimezone($timezone);
} }
return $date; return $date;