bug #1533 Make date_modify work with DateTimeImmutable (globin)

This PR was squashed before being merged into the 1.16-dev branch (closes #1533).

Discussion
----------

Make date_modify work with DateTimeImmutable

Use the return value of `$date->modify` because `DateTimeImmutable::modify`
returns the modified object and does not modify the object modify was
called on.

Commits
-------

a5fe46f Make date_modify work with DateTimeImmutable
This commit is contained in:
Fabien Potencier
2014-10-11 22:13:21 +02:00
2 changed files with 11 additions and 2 deletions
+9 -2
View File
@@ -473,9 +473,16 @@ function twig_date_format_filter(Twig_Environment $env, $date, $format = null, $
function twig_date_modify_filter(Twig_Environment $env, $date, $modifier)
{
$date = twig_date_converter($env, $date, false);
$date->modify($modifier);
$resultDate = $date->modify($modifier);
return $date;
// This is a hack to ensure PHP 5.2 support and support for DateTimeImmutable
// DateTime::modify does not return the modified DateTime object < 5.3.0
// and DateTimeImmutable does not modify $date.
if (null === $resultDate) {
return $date;
} else {
return $resultDate;
}
}
/**
@@ -8,6 +8,7 @@ version_compare(phpversion(), '5.5.0', '>=')
{{ date1|date('d/m/Y H:i:s', 'Asia/Hong_Kong') }}
{{ date1|date('d/m/Y H:i:s', timezone1) }}
{{ date1|date('d/m/Y H:i:s') }}
{{ date1|date_modify('+1 hour')|date('d/m/Y H:i:s') }}
{{ date2|date('d/m/Y H:i:s P', 'Europe/Paris') }}
{{ date2|date('d/m/Y H:i:s P', 'Asia/Hong_Kong') }}
@@ -27,6 +28,7 @@ October 4, 2010 13:45
04/10/2010 19:45:00
04/10/2010 07:45:00
04/10/2010 13:45:00
04/10/2010 14:45:00
04/10/2010 19:45:00 +02:00
05/10/2010 01:45:00 +08:00