3

Web サイトで PHP5 クラス「DateTime」を使用しています。Web サイトを英語からスペイン語に翻訳する必要がありますが、このクラスが 2 月のように月と日をスペイン語で表示できるかどうかはわかりません -> Febrero と Monday - >ルネス。あなたの助けとコメントをありがとう!

4

1 に答える 1

0

コメントできないので、この投稿は回答です。

stftimeを調べましたか?

私は、個人的には良い結果が得られなかったので、元に戻して月と日を手動で翻訳する必要がありました。以下の解決策: (yii::t() 部分は翻訳が行われる場所です)

function tDate($format,$date='now'){
    // make the date a DateTime Object 
    if(is_string($date)) $date = new DateTime($date);
    if(is_int($date)) $date = new DateTime(date('r',$date));
    if(!is_object($date)) return 'invalid input date';

    $monthIndex = $date->format("n"); // used as array index
    $dayIndex = $date->format("w"); // used as array index

    // we store in variables the translated format text 
    eval('$M = '.yii::t('app','array ( 1 => "Jan", "Feb", "Mar", "Apr","May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")').';');
    eval('$F = '.yii::t('app','array ( 1 => "January", "February", "March", "April","May", "June", "July", "August", "September", "October", "November",    "December")').';');
    eval('$D = '.yii::t('app','array (0 => "Mon", "Tue", "Wed", "Thu","Fri", "Sat", "Sun")').';');
    eval('$l = '.yii::t('app','array (0 => "Sunday", "Monday", "Tuesday","Wednesday", "Thursday", "Friday", "Saturday")').';');

    $format_len = strlen($format);
    $buffer = '';

    // we perform the formatting as in date(), but we use our special cases. 
    for ($i = 0; $i < $format_len; $i++){
        switch($format[$i]){
            case 'M': $buffer .= $M[$monthIndex]; break; 
            case 'F': $buffer .= $F[$monthIndex]; break;
            case 'D': $buffer .= $D[$dayIndex]; break;
            case 'l': $buffer .= $l[$dayIndex]; break;
            case '\\': $buffer .= $format[++$i]; break;
            default: $buffer.= $date->format($format[$i]);
        }
    }
    return $buffer;
 }

基本的に、これは phpdate()関数ですが、M、F、D、および l 形式をオーバーロードします (すべてをカバーする必要はありませんでした)。

于 2013-07-31T18:18:10.420 に答える