Twig

The flexible, fast, and secure
template engine for PHP

a Symfony Product
Docs Filters date
You are reading the documentation for Twig 1.x. Switch to the documentation for Twig 2.x, 3.x.
Warning Twig version 1.x is no longer maintained.

Table of Contents

Questions & Feedback

License

Twig documentation is licensed under the new BSD license.

date

1.1

The timezone support has been added in Twig 1.1.

1.5

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

1.6.1

The default timezone support has been added in Twig 1.6.1.

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:

1
{{ 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":

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

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

1
{{ 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:

1
{{ 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 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:

1
2
3
4
5
$twig = new \Twig\Environment($loader);
$twig->getExtension('\Twig\Extension\CoreExtension')->setDateFormat('d/m/Y', '%d days');

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

Timezone

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:

1
{{ 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:

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

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

1
2
3
4
5
$twig = new \Twig\Environment($loader);
$twig->getExtension('\Twig\Extension\CoreExtension')->setTimezone('Europe/Paris');

// before Twig 1.26
$twig->getExtension('core')->setTimezone('Europe/Paris');

Arguments

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