PHP date()用外语 - 例如3月25日Aoû09

时间:2009-08-25 12:41:44

标签: php date localization

我有一个脚本需要向国际观众显示日期数据 - 例如

  

“于2009年8月25日星期二提交”

是否有一种更简单/更清洁的方式将其转换为法语(等)“Mar 25Aoû09”而不是:

设置常量LANG$LANGUAGES包含文件数组& :

if(LANG != 'EN')
{
include $LANGUAGES['LANG'];
}

&安培;然后包含的文件映射日期&几个月替换适当的区域设置?

由于

大卫

4 个答案:

答案 0 :(得分:42)

我认为如果不设置LOCALE,你就无法摆脱这样做:

<?php
setlocale(LC_ALL, 'fr_FR');

echo strftime("%A %e %B %Y");
?> 

strftime的一些细节: http://us2.php.net/manual/en/function.strftime.php

答案 1 :(得分:5)

根据date功能的手册页,您应该使用setlocale。然后,strftime等方法将使用指定的语言环境。但是,date不会出于某种原因。

答案 2 :(得分:2)

我认为使用strftimesetlocale函数执行此操作的最佳方法。但是如果您的服务器没有安装所需的语言环境,那么它将无效(在当前问题中它是fr_FR)。

如果区域设置更改不成功,则下面的代码抛出异常

<?php

$result = setlocale(LC_ALL, 'fr_FR');

if($result === false){
    throw new \RuntimeException(
        'Got error changing locale, check if locale is installed on the system'
    );
}

$dayOfMonth = '%e';
//if it is Windows we will use %#d as %e is not supported
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
   $dayOfMonth = '%#d';
}

//Mar 25 Aoû 09 - month shortname, day of month, day shortname, year last two digits
echo strftime("%b $dayOfMonth %a %y"); 

答案 3 :(得分:0)

您可能还想查看Zend_Date