在模板中,我显示特定日期的日期和月份:
<div class="jour"><?php echo date('d',strtotime($content->getCreatedAt())) ?></div>
<div class="mois"><?php echo date('M',strtotime($content->getCreatedAt())) ?></div>
这很好用,问题是月份名称是英文的。我在哪里指定我想要另一个语言环境中的月份名称,例如法语?
Symfony在支持 i18n 的 Date 帮助器中有一个format_date帮助器。不幸的是,这些格式的文档记录很糟糕,请参阅此链接以获取有关它们的提示。
default_culture
仅适用于 symfony 国际化框架,不适用于原生 PHP 函数。如果您想在整个项目范围内更改此设置,我会在config/ProjectConfiguration.class.php
、 using中进行setlocale
,然后使用strftime
而不是date
:
// config/ProjectConfigration.class.php
setlocale(LC_TIME, 'fr_FR');
// *Success.php
<div class="jour"><?php echo strftime('%d',strtotime($content->getCreatedAt())) ?></div>
<div class="mois"><?php echo strftime('%b',strtotime($content->getCreatedAt())) ?></div>
请注意,这需要在您的计算机上启用区域设置。要检查,做var_dump(setlocale(LC_ALL, 'fr_FR'));
如果结果是false
,你不能setlocale
用来做这个,可能需要自己编写翻译代码。此外,您需要在系统上安装正确的语言环境。要检查安装了哪些语言环境,请locale -a
在命令行中执行。
很抱歉这么晚才进来,但我想在这里添加我自己的想法。我想出的最佳国际日期格式是“%e %b %Y”,例如 2012 年 3 月 9 日。我发现这比 ISO 格式“%Y-%m-%d”(例如 2012- 03-09。根据文档, %x 格式应该是区域设置敏感的,但它对我不起作用,至少在 iPhone 上不起作用。这可能是因为 Safari 没有在 HTML 标头中传递语言环境,我不知道。
有时将具有不同可能值的数组用于 setlocale() 很有用。特别是支持不同的环境(windows,linux,...)
setlocale(LC_TIME, array('fr', 'fr_FR', 'fr_FR.utf8', 'french', 'french_FRANCE', 'french_FRANCE.utf8'));
echo strftime("%A %d %B", strtotime(date("Y-m-d")));
正如文档所述:
如果语言环境是一个数组或后跟附加参数,则尝试将每个数组元素或参数设置为新的语言环境,直到成功。如果一个语言环境在不同系统上以不同的名称已知,或者用于为可能不可用的语言环境提供后备,这将很有用。