从其他语言的名称中获取月份编号

时间:2010-12-14 09:50:56

标签: php date setlocale

如果我有某种语言的月份名称(比方说阿尔巴尼亚语),我如何得到与之对应的数字(用PHP表示)?除了使用该语言的月份名称制作数组的明显方法(我担心它很容易出现拼写错误),我认为你可以使用setlocale,但我无法弄清楚下一步该做什么。

2 个答案:

答案 0 :(得分:1)

看看i18n包。它为php中的国际化提供了类和函数。

http://php-flp.sourceforge.net/getting_started_english.htm#dates

答案 1 :(得分:1)

我可能错了,但据我所知,您可以使用区域设置生成月份名称,但是没有能够解析非英文名称的内置日期函数。

生成要比较的名称列表应该相当容易:

<?php

$langs = array(
    // Windows only locale names
    'Albanian',
    'French',
    'German',
    'Spanish',
);
$months = array();

foreach($langs as $lang){
    setlocale(LC_TIME, $lang);
    foreach(range(1, 12) as $i){
        $months[$lang][$i] = strftime('%B', mktime(0, 0, 0, $i));
    }
}

但是,某些语言中可能存在替代拼写,因此此方法的可靠性实际上取决于您的确切需求。

PHP有一些Internationalization Functions可能是更好的选择。 IntlDateFormatter::parse()方法似乎完全符合您的要求。但是,其要求包括PHP 5 >= 5.3.0, PECL intl >= 1.0.0