Twig

灵活、快速且安全
PHP 的模板引擎

a Symfony Product
您正在阅读 Twig 3.x 的文档。切换到 Twig 1.x, 2.x 的文档。

目录

问题 & 反馈

许可证

Twig documentation 根据新的 BSD license 获得许可。

date

date 过滤器将日期格式化为给定的格式

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

格式说明符与 date 支持的格式相同,除非过滤的数据类型为 DateInterval,此时格式必须符合 DateInterval::format

date 过滤器接受字符串(它必须是 strtotime 函数支持的格式)、DateTime 实例或 DateInterval 实例。例如,要显示当前日期,请过滤单词 “now”

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

要在日期格式中转义单词和字符,请在每个字符前使用 \\

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

如果传递给 date 过滤器的值是 null,则默认情况下它将返回当前日期。如果需要空字符串而不是当前日期,请使用三元运算符

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

如果未提供格式,Twig 将使用默认格式:F j, Y H:i。可以通过在 core 扩展实例上调用 setDateFormat() 方法来更改此默认值。第一个参数是日期的默认格式,第二个参数是日期间隔的默认格式

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

时区

默认情况下,日期通过应用默认时区(php.ini 中指定的或在 Twig 中声明的时区——见下文)来显示,但您可以通过显式指定受支持的 timezone 来覆盖它

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

如果日期已经是 DateTime 对象,并且如果您想保留其当前时区,请传递 false 作为时区值

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

默认时区也可以通过调用 setTimezone() 全局设置

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

参数

  • format: 日期格式(默认格式为 F j, Y H:i,它将呈现为 January 11, 2024 15:17
  • timezone: 日期时区