这取决于你想要显示日期的格式。
静态日期格式
如果你想显示一个静态格式,它对所有地区都是一样的(例如Atom提要的ISO 8601),你应该使用Twig的日期过滤器:
{{ game.gameDate|date('Y-m-d\\TH:i:sP') }}
它总是以以下格式返回一个datetime:
2014 - 05 - 02 - t08:55:41z
日期过滤器接受的格式字符串与PHP的date()函数所使用的格式字符串相同。(唯一的区别是,据我所知,你不能使用预定义的常量,可以在PHP date()函数中使用)
本地化日期(和时间)
然而,由于您希望在浏览器中呈现它,您可能希望以人类可读的格式显示它,并针对用户的语言和位置进行本地化。而不是自己做本地化,你可以使用Intl扩展(这利用了PHP的IntlDateFormatter)。它提供了一个localizeddate过滤器,该过滤器将使用本地化格式输出日期和时间。
localizeddate( date_format, time_format [, locale ] )
localizeddate的参数:
date_format:格式字符串之一(见下文)
time_format:格式字符串之一(见下文)
locale:(可选)使用它来覆盖配置的locale。省略此参数以使用默认区域设置,这可以在Symfony的配置中配置。
(还有更多,请参阅文档以获得可能参数的完整列表)
对于date_format和time_format,可以使用以下字符串之一:
如果您不想包含此元素,则为none
'short'是最简短的形式(在英语地区是12/13/52或3:30pm)
“medium”代表中等风格(1952年1月12日在英语地区)
long表示长体(1952年1月12日或英语地区下午3:30:32)
'full'用于完全指定的风格(在英语地区,公元1952年4月12日星期二或太平洋标准时间下午3:30:42)
例子
因此,例如,如果你想以相当于2014年2月6日上午10:52的格式显示日期,在你的Twig模板中使用以下行:
{{ game.gameDate|localizeddate('long', 'short') }}
然而,如果你使用了不同的语言环境,结果将被本地化为该语言环境:
2014年2月6日10:52本地nl;
2014年2月6日10:52本地fr;
6. 2014年2月10:52本地;
等等。
如您所见,localizeddate不仅转换月份名称,而且还使用本地符号。英语表示法将日期放在月份之后,而荷兰语、法语和德语表示法将日期放在月份之前。英语和德语的月份名称以大写字母开头,而荷兰语和法语的月份名称是小写字母。德国日期后面有个点。
安装/设置区域
Intl扩展的安装说明可以在这个单独的答案中找到。