我有一个脚本需要向国际观众显示日期数据 - 例如
“于2009年8月25日星期二提交”
是否有一种更简单/更清洁的方式将其转换为法语(等)“Mar 25Aoû09”而不是:
设置常量LANG
和$LANGUAGES
包含文件数组& :
if(LANG != 'EN')
{
include $LANGUAGES['LANG'];
}
&安培;然后包含的文件映射日期&几个月替换适当的区域设置?
由于
大卫
答案 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)
答案 2 :(得分:2)
我认为使用strftime
和setlocale
函数执行此操作的最佳方法。但是如果您的服务器没有安装所需的语言环境,那么它将无效(在当前问题中它是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。