merged branch vitman/patch-1 (PR #871)

This PR was squashed before being merged into the master branch (closes #871).

Commits
-------

b89163d Update lib/Twig/Extension/Core.php

Discussion
----------

Update lib/Twig/Extension/Core.php

Added support for setted default timezone for twig date functions.

---------------------------------------------------------------------------

by henrikbjorn at 2012-10-26T07:19:02Z

This have the same problem as the other PR you created. See php.net/datetime for reference.
This commit is contained in:
Fabien Potencier
2012-10-30 09:40:23 +01:00
+7 -6
View File
@@ -446,11 +446,12 @@ function twig_date_converter(Twig_Environment $env, $date = null, $timezone = nu
{
if (!$date instanceof DateTime) {
$asString = (string) $date;
$defaultTimeZone = $env->getExtension('core')->getTimezone();
$defaultTimeZone = $defaultTimeZone !== null ? $defaultTimeZone : new DateTimeZone(date_default_timezone_get());
if (ctype_digit($asString) || (!empty($asString) && '-' === $asString[0] && ctype_digit(substr($asString, 1)))) {
$date = new DateTime('@'.$date);
$date = new DateTime('@'.$date, $defaultTimeZone);
} else {
$date = new DateTime($date);
$date = new DateTime($date, $defaultTimeZone);
}
} else {
$date = clone $date;
@@ -463,10 +464,10 @@ function twig_date_converter(Twig_Environment $env, $date = null, $timezone = nu
} else {
$date->setTimezone(new DateTimeZone($timezone));
}
} elseif (($timezone = $env->getExtension('core')->getTimezone()) instanceof DateTimeZone) {
$date->setTimezone($timezone);
} elseif ($defaultTimeZone instanceof DateTimeZone) {
$date->setTimezone($defaultTimeZone);
} else {
$date->setTimezone(new DateTimeZone(date_default_timezone_get()));
$date->setTimezone(new DateTimeZone($defaultTimeZone));
}
return $date;