这取决于您想要显示日期的格式。
静态日期格式
如果您想显示一个静态格式,对于所有语言环境都相同(例如Atom feed中的
ISO 8601),您应该使用Twig的
date
filter:
{{ game.gameDate|date('Y-m-d\\TH:i:sP') }}
这将始终以以下格式返回日期时间:
2014-05-02T08:55:41Z
date
过滤器接受的格式字符串与您使用 PHP 的 date()
函数 相同。(唯一的区别是,据我所知,您无法使用在 PHP date()
函数中可用的预定义常量)
本地化日期(和时间)
但是,由于您想在浏览器中呈现它,因此您可能希望以人类可读的格式显示它,并针对用户的语言和位置进行本地化。 您可以使用 Intl 扩展程序 来完成本地化 (它使用了 PHP 的 IntlDateFormatter)。 它提供了一个过滤器 localizeddate
,该过滤器将使用本地化格式输出日期和时间。
localizeddate( date_format, time_format [, locale ] )
localizeddate
的参数:
date_format
: 格式字符串之一(见下文)
time_format
: 格式字符串之一(见下文)
locale
: (可选)使用此参数覆盖配置的区域设置。将此参数省略以使用默认区域设置,可以在Symfony的配置中进行配置。
(还有更多,请参阅文档以获取可能参数的完整列表)
对于date_format
和time_format
,您可以使用以下字符串之一:
'none'
如果您不想包含此元素
'short'
用于最简式样(在英语区域设置中为12/13/52或3:30 pm)
'medium'
用于中等式样(在英语区域设置中为Jan 12, 1952)
'long'
用于长式样(在英语区域设置中为January 12, 1952或3:30:32 pm)
'full'
用于完全指定的式样(在英语区域设置中为Tuesday, April 12, 1952 AD或3:30:42 pm PST)
示例
例如,如果您想以等同于February 6, 2014 at 10:52 AM
的格式显示日期,请在Twig模板中使用以下行:
{{ game.gameDate|localizeddate('long', 'short') }}
然而,如果您使用不同的语言环境,则结果将针对该语言环境进行本地化:
- 对于
nl
语言环境,日期格式为6 februari 2014 10:52
;
- 对于
fr
语言环境,日期格式为6 février 2014 10:52
;
- 对于
de
语言环境,日期格式为6. Februar 2014 10:52
等。
正如您所看到的,
localizeddate
不仅翻译月份名称,还使用本地符号。英文符号将日期放在月份之后,而荷兰语、法语和德语符号将其放在月份之前。英文和德文月份名称以大写字母开头,而荷兰和法国的月份名称则是小写字母。而德国的日期则附加了一个点。
安装/设置语言环境
有关Intl扩展的安装说明,请参见这个单独的答案。
{{ game.gameDate|date('Y-m-d H:i:s') }}
。我在寻找“分钟”的字符时遇到了问题。 - murkodate
函数时,我发现今天的日期。根据你的示例,你需要用{% if game.gameDate is not empty %} ... {%endif}
包裹它。 - fazyDateTime
类!相反,只需在Twig中使用localizeddate
过滤器即可。 - Nic Wortel{% if game.gameDate %} {{ game.gameDate|date('Y-m-d H:i:s') }} {% endif %}
。 - some_groceries