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
: 日期时区