从其他语言的名称获取月份数

发布于 2024-10-07 20:20:55 字数 120 浏览 5 评论 0原文

如果我有某种语言的月份名称(比如说阿尔巴尼亚语),我如何获得与其对应的数字(PHP)?除了使用该语言的月份名称创建数组的明显方法(恐怕这很容易出现拼写错误)之外,我认为您可以使用 setlocale 但我不知道下一步该怎么做。

If I have a month name in a certain language(let's say Albanian), how do I get the number corresponding to it (in PHP)? Besides the obvious method of making an array with the month names of that language (I'm afraid that's quite vulnerable to spelling mistakes) I presume that you can use setlocale but I can't figure out what to do next.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

且行且努力 2024-10-14 20:20:55

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

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

<?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 有一些国际化函数,这可能是更好的选择。 IntlDateFormatter::parse() 方法似乎完全符合您的要求问。但是,其要求包括 PHP 5 >= 5.3.0、PECL intl >= 1.0.0

I may be wrong but, as far as I know, you can use locales to generate month names but there aren't builtin date functions that are able to parse non-English names.

It should be fairly easy to generate a list of names to compare against:

<?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));
    }
}

However, it's possible that there're alternative spellings in some languages so the reliability of this method actually depends on your exact needs.

PHP has some Internationalization Functions that might be a better bet. The IntlDateFormatter::parse() method appears to do exactly what you are asking. However, its requirements include PHP 5 >= 5.3.0, PECL intl >= 1.0.0.

万劫不复 2024-10-14 20:20:55

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

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

Take a look at the i18n package. It provides classes and functions for internationalization in php.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文