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)
{
// determine the timezone
if (!$timezone) {
$defaultTimezone = $env->getExtension('core')->getTimezone();
} elseif (!$timezone instanceof DateTimeZone) {
$defaultTimezone = new DateTimeZone($timezone);
} else {
$defaultTimezone = $timezone;
if (false !== $timezone) {
if (null === $timezone) {
$timezone = $env->getExtension('core')->getTimezone();
} elseif (!$timezone instanceof DateTimeZone) {
$timezone = new DateTimeZone($timezone);
}
}
// immutable dates
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) {
$date = clone $date;
if (false !== $timezone) {
$date->setTimezone($defaultTimezone);
$date->setTimezone($timezone);
}
return $date;
@@ -523,9 +523,9 @@ function twig_date_converter(Twig_Environment $env, $date = null, $timezone = nu
$date = '@'.$date;
}
$date = new DateTime($date, $defaultTimezone);
$date = new DateTime($date, $env->getExtension('core')->getTimezone());
if (false !== $timezone) {
$date->setTimezone($defaultTimezone);
$date->setTimezone($timezone);
}
return $date;