我有一个数据库(oracle)返回的日期,格式类似于01-MAY-11: 并将月份从英语转换为frensh(MAY到Mai), 我这样做了:
$date=str_replace("JAN","Janvier",$date);
$date=str_replace("FEB","Février",$date);
$date=str_replace("MAR","Mars",$date);
$date=str_replace("APR","Avril",$date);
$date=str_replace("MAY","Mai",$date);
$date=str_replace("JUN","Juin",$date);
$date=str_replace("JUL","Juillet",$date);
$date=str_replace("AUG","Août",$date);
$date=str_replace("SEPT","Septembre",$date);
$date=str_replace("OCT","Octobre",$date);
$date=str_replace("NOV","Novembre",$date);
$date=str_replace("DEC","Décembre",$date);
但我发现它很难看,所以有更简洁的方法来做到这一点。
谢谢
答案 0 :(得分:4)
使用此
<?php
setlocale(LC_TIME, 'fr_FR');
echo strftime("%d %b %Y", strtotime($date)); //use your dates timestamp
?>
答案 1 :(得分:2)
我会使用数组存储月份的翻译:
$mc = array("jan"=>"Janvier","feb"=>"Février", ....); //(and so on)
$new_date = explode('-',$date);
$new_date[1] = $mc[strtolower($new_date[1])];
$new_date = implode('-',$new_date);
当然,您需要检查其日期并确保月份始终为秒
答案 2 :(得分:2)
您必须使用setlocale设置本地设置,以获得所需语言的日期月份和天数
这是一个基本的例子:
// here's a current list of locales you can find on systems for french
$locales = array('fr_FR.utf8','fr_FR.UTF8','fr_FR.utf-8','fr_FR.UTF-8','fr_FR','fr');
setlocale(LC_TIME,$locales);
//now you can call your localized date function
如果您不想更改应用程序其余部分的区域设置,可以跟踪当前设置的区域设置,并在日期调用后将其恢复如下:
// keep track of locals setting:
$loc = setlocale(LC_TIME,0);
$tmpLoc = setlocale(LC_TIME,$locales);
//your date call here and then restore locale setting
setlocale(LC_TIME,$loc);
答案 3 :(得分:2)
虽然区域设置解决方案最好,但TO_CHAR
NLS_DATE_LANGUAGE
选项也可以直接从Oracle输出:
SELECT TO_CHAR(sysdate, 'DD-MONTH-YYYY', 'NLS_DATE_LANGUAGE=French') FROM DUAL;
答案 4 :(得分:1)
OO风格:
<?php
class FrDate extends DateTime
{
public function month($format)
{
$english = array('Jan','Febr','Mar','Apr','May','Jun','Jul','Aug','Sept','Oct','Nov','Dec');
$french = array('Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre');
return str_replace($english, $french, parent::format($format));
}
}
$date = new FrDate('26 Dec 2011');
echo $date->month('M'); //Output: Décembre
?>