format_datetime
format_datetime
过滤器格式化日期时间
1 2
{# Aug 7, 2019, 11:39:12 PM #}
{{ '2019-08-07 23:39:12'|format_datetime() }}
格式
您可以调整日期部分和时间部分的输出
1 2 3 4 5 6 7 8
{# 23:39 #}
{{ '2019-08-07 23:39:12'|format_datetime('none', 'short', locale: 'fr') }}
{# 07/08/2019 #}
{{ '2019-08-07 23:39:12'|format_datetime('short', 'none', locale: 'fr') }}
{# mercredi 7 août 2019 23:39:12 UTC #}
{{ '2019-08-07 23:39:12'|format_datetime('full', 'full', locale: 'fr') }}
支持的值有:none
、short
、medium
、long
和 full
。
3.6
当运行在 PHP 8.0 及更高版本或使用定义了 IntlDateFormatter::RELATIVE_*
常量和相关行为的 polyfill 时,也支持 relative_short
、relative_medium
、relative_long
和 relative_full
。
为了更大的灵活性,您甚至可以定义自己的模式(请参阅 ICU 用户指南 以了解支持的模式)。
1 2
{# 11 oclock PM, GMT #}
{{ '2019-08-07 23:39:12'|format_datetime(pattern: "hh 'oclock' a, zzzz") }}
区域设置
默认情况下,过滤器使用当前区域设置。您可以显式传递它
1 2
{# 7 août 2019 23:39:12 #}
{{ '2019-08-07 23:39:12'|format_datetime(locale: 'fr') }}
时区
默认情况下,日期通过应用默认时区(在 php.ini 中指定或在 Twig 中声明的时区 -- 见下文)显示,但您可以通过显式指定时区来覆盖它
1
{{ datetime|format_datetime(locale: 'en', timezone: 'Pacific/Midway') }}
如果日期已经是 DateTime 对象,并且您想保留其当前时区,请将 false
作为时区值传递
1
{{ datetime|format_datetime(locale: 'en', timezone: false) }}
默认时区也可以通过调用 setTimezone()
全局设置
1 2
$twig = new \Twig\Environment($loader);
$twig->getExtension(\Twig\Extension\CoreExtension::class)->setTimezone('Europe/Paris');
注意
format_datetime
过滤器是 IntlExtension
的一部分,默认情况下未安装。请先安装它
1
$ composer require twig/intl-extra
然后,在 Symfony 项目上,安装 twig/extra-bundle
1
$ composer require twig/extra-bundle
否则,在 Twig 环境中显式添加扩展
1 2 3 4
use Twig\Extra\Intl\IntlExtension;
$twig = new \Twig\Environment(...);
$twig->addExtension(new IntlExtension());