Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php-如何以俄语语言环境输出日期_Php - Fatal编程技术网

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

php-如何以俄语语言环境输出日期,php,Php,我有以下日期:18/07/2013。我希望它以2013年7月18日的以下格式输出,July应替换为俄文月份名称。下面是我的工作: 1) 从字符串中生成时间戳18/07/2013 2) 设置俄语语言环境setlocale(LC_ALL,'ru_ru.utf-8') 3) 使用标准时间(“%d%B%Y”,日期)格式化时间 然而,它输出了2013年7月18日的July,而没有用俄文名称替换该月的July。怎么了?我用西班牙语实现了相同的结果,就是定义了两个数组,$patterns(英文名称)和$rep

我有以下日期:
18/07/2013
。我希望它以2013年7月18日的以下格式输出,
July
应替换为俄文月份名称。下面是我的工作:
1) 从字符串中生成时间戳
18/07/2013

2) 设置俄语语言环境
setlocale(LC_ALL,'ru_ru.utf-8')
3) 使用标准时间(“%d%B%Y”,日期)格式化时间

然而,它输出了2013年7月18日的
July
,而没有用俄文名称替换该月的
July
。怎么了?

我用西班牙语实现了相同的结果,就是定义了两个数组,$patterns(英文名称)和$replacements(西班牙语等效名称),并调用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;
}

希望您会发现它有点有用。

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

例如:

PHP文档:


如果您不需要完整的句子,也可以使用IntlDateFormatter:

setlocale()的可能副本:返回新的当前区域设置,如果您的平台上未实现区域设置功能,指定的区域设置不存在或类别名称无效,则返回FALSE。。。您正在测试setlocale()的返回值吗?@MarkBaker,您是对的,它返回FALSE。如何测试区域设置是否未安装或类别名称无效?在Linux上,
locale-a
将返回可用区域设置的列表hanks,我在Windows上。但我想这个地区是不可用的。