mirror of
https://github.com/twigphp/Twig.git
synced 2026-09-16 12:26:30 +00:00
bug #1449 Fixed the date filter's timezone not being set correctly with strings (gbouchez)
This PR was merged into the 1.16-dev branch.
Discussion
----------
Fixed the date filter's timezone not being set correctly with strings
When the date filter is used on a string and the timezone argument is specified, the timezone is ignored because of this :
$date = new DateTime($date, $defaultTimezone);
if (false !== $timezone) {
$date->setTimezone($defaultTimezone);
}
Since the date is initialized with `$defaultTimezone` as its timezone, using `$date->setTimezone($defaultTimezone);` has no effect, and the date is displayed without changes since it is considered to already be from this timezone.
Might fix issue #1340
Commits
-------
44aaa5b Fixed the date filter's timezone not being set correctly with strings
This commit is contained in:
+10
-10
@@ -507,23 +507,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;
|
||||
@@ -534,9 +534,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;
|
||||
|
||||
Reference in New Issue
Block a user