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