2014-01-20 19 views
0

我有以下日期:18/07/2013。我希望它以2013年7月18日的格式輸出,其中July應該換成當月的俄文名稱。所以這裏是我做的:
1)使時間戳不在字符串18/07/2013
2)設置俄語語言環境setlocale(LC_ALL, 'ru_RU.utf-8');
3)格式化時間使用strftime("%d %B %Y", date);
然而,它輸出18 July 2013而不用July與本月的俄文名稱。怎麼了?php - 我如何在俄羅斯語區域輸出日期

+0

可能的重複https://stackoverflow.com/questions/10486658/php-date-international-month-names – reikyoushin

+1

se tlocale():返回新的當前語言環境,__或FALSE如果語言環境功能未在您的平臺上實現,指定的語言環境不存在或類別名稱無效......您是否正在測試setlocale()的返回值? –

+0

@MarkBaker,你是對的,它返回FALSE。如何測試區域設置是否未安裝或類別名稱是否無效? –

回答

1

我在西班牙語中取得同樣結果的做法是定義兩個數組,其中英文名稱爲$模式,西班牙語使用等價名稱替換$,並調用preg_replace函數將它們作爲第一個和第二個參數傳遞,格式化結果日期作爲第三個參數。

這是我建的功能:

function MonthToSpanish($str, $three = false) 
{ 
    $months = array(
     '/January/', '/February/', '/March/', 
     '/April/', '/May/', '/June/', '/July/', 
     '/August/', '/September/', '/October/', '/November/', '/December/', 
     '/Jan/', '/Apr/', '/Aug/', '/Dec/', 
    ); 
    $meses = array(
     'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 
     'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre', 
     'Ene', 'Abr', 'Ago', 'Dic', 
    ); 
    $res = preg_replace($months, $meses, $str); 
    if ($three) { 
     $res = str_replace('Mayo', 'May', $res); 
    } 
    return $res; 
} 

希望你會發現它有點有用。