Twig

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

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

问题和反馈

许可证

Twig 文档基于新 BSD 许可证授权。

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') }}

支持的值有:noneshortmediumlongfull

3.6

当运行在 PHP 8.0 及更高版本或使用定义了 IntlDateFormatter::RELATIVE_* 常量和相关行为的 polyfill 时,也支持 relative_shortrelative_mediumrelative_longrelative_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());

参数

  • locale:区域设置代码,如 RFC 5646 中定义
  • dateFormat:日期格式
  • timeFormat:时间格式
  • pattern:日期时间模式
  • timezone:日期时区名称
  • calendar:日历(默认为“公历”)