/Twig 1


New in version 1.1: The timezone support has been added in Twig 1.1.

New in version 1.5: The default date format support has been added in Twig 1.5.

New in version 1.6.1: The default timezone support has been added in Twig 1.6.1.

New in version 1.11.0: The introduction of the false value for the timezone was introduced in Twig 1.11.0

The date filter formats a date to a given format:

{{ post.published_at|date("m/d/Y") }}

The format specifier is the same as supported by date, except when the filtered data is of type DateInterval, when the format must conform to DateInterval::format instead.

The date filter accepts strings (it must be in a format supported by the strtotime function), DateTime instances, or DateInterval instances. For instance, to display the current date, filter the word "now":

{{ "now"|date("m/d/Y") }}

To escape words and characters in the date format use \\ in front of each character:

{{ post.published_at|date("F jS \\a\\t g:ia") }}

If the value passed to the date filter is null, it will return the current date by default. If an empty string is desired instead of the current date, use a ternary operator:

{{ post.published_at is empty ? "" : post.published_at|date("m/d/Y") }}

If no format is provided, Twig will use the default one: F j, Y H:i. This default can be easily changed by calling the setDateFormat() method on the core extension instance. The first argument is the default format for dates and the second one is the default format for date intervals:

$twig = new Twig_Environment($loader);
$twig->getExtension('Twig_Extension_Core')->setDateFormat('d/m/Y', '%d days');

// before Twig 1.26
$twig->getExtension('core')->setDateFormat('d/m/Y', '%d days');


By default, the date is displayed by applying the default timezone (the one specified in php.ini or declared in Twig -- see below), but you can override it by explicitly specifying a timezone:

{{ post.published_at|date("m/d/Y", "Europe/Paris") }}

If the date is already a DateTime object, and if you want to keep its current timezone, pass false as the timezone value:

{{ post.published_at|date("m/d/Y", false) }}

The default timezone can also be set globally by calling setTimezone():

$twig = new Twig_Environment($loader);

// before Twig 1.26


  • format: The date format
  • timezone: The date timezone

© 2009–2017 by the Twig Team
Licensed under the three clause BSD license.
The Twig logo is © 2010–2017 SensioLabs