2010-10-13 69 views
5

在模板中我显示特定日期的日和月:如何根据区域设置格式化日期?

<div class="jour"><?php echo date('d',strtotime($content->getCreatedAt())) ?></div> 
<div class="mois"><?php echo date('M',strtotime($content->getCreatedAt())) ?></div> 

这工作得很好,问题是月份名称是英文的。我在哪里指定我想在另一个语言环境中使用月份名称,例如法语?

+0

我尝试设置在settings.yml中的“default_culture”,但这并没有改变任何东西 – Manu 2010-10-13 15:25:37

回答

5

Symfony在支持i18n的日期助手中有一个format_date助手。不幸的是,这些格式文档记录很糟糕,see this link对他们提示。

+2

是啊...这将是一个好得多的办法做吧!然而,我将把我的答案作为一般的PHP解决方案。 – lonesomeday 2010-10-13 20:17:46

+0

format_date可以显示月份的名称吗?我似乎无法找到它的文件。 – Manu 2010-10-14 07:15:30

+0

没关系,发现它 - http://trac.symfony-project.org/wiki/formatDateHowTo – Manu 2010-10-14 07:26:29

1

default_culture仅适用于symfony国际化框架,不适用于原生PHP函数。如果要宽更改此设置的项目,我会在config/ProjectConfiguration.class.php做到这一点,利用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

+0

个人认为'的strftime%X%X' PARAMS非常有用 – 2014-06-12 09:43:46

1

对不起,在当天晚些时候接吻,但我想在这里添加自己的想法。我提出的最佳国际日期格式是“%e%b%Y”,例如2012年3月9日。我发现这比ISO格式“%Y-%m-%d”更可读,例如, 2012-03-09。根据文档,%x格式应该是区域设置敏感的,但它不适用于我,至少在iPhone上不适用。这可能是因为Safari没有通过HTML标头中的区域设置,我不知道。

0

使用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"))); 

随着文档状态:

如果区域是一个数组或之后附加的参数然后每个数组元素或参数是试图将其设置为新的区域,直到成功。如果在不同系统上以不同名称知道区域设置,或者为可能不可用的区域设置提供回退,这很有用。

相关问题