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