php - 如何在俄语语言环境中输出日期

时间:2014-01-20 18:49:17

标签: php

我有以下日期: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替换当月的俄语名称。怎么了?

2 个答案:

答案 0 :(得分:1)

我在西班牙语中所做的相同结果是定义了两个数组,英文名称的$ patterns和西班牙语中等效名称的$替换,并调用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;
}

希望你会觉得它很有用。

答案 1 :(得分:0)

如果安装了Intl扩展,您可以使用MessageFormatter执行格式化和可能的语法差异

示例:http://php.budgegeria.de/zrffntr-sbeznggre

PHP文档:http://www.php.net/manual/en/class.messageformatter.php

如果您不需要整个句子,您也可以使用IntlDateFormatter:http://www.php.net/manual/en/intldateformatter.format.php