将月份转换为另一种语言

时间:2011-12-26 10:56:59

标签: php date

我有一个数据库(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);

但我发现它很难看,所以有更简洁的方法来做到这一点。

谢谢

5 个答案:

答案 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
?>