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;
$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;