4

优美的波兰语在说“2013 年 3 月”(无天)和“2013 年 3 月 17 日”(有天)之类的话时使用不同的语法来命名月份。

使用 PHP 的strftime()with%B可以为没有日期的情况提供正确的月份名称。如何在 with-day-case 中正确写入日期?我是否必须自己编写代码,或者是否已经对此类情况提供了一些支持?

4

4 回答 4

8

如果您打开 intl 扩展,则有IntlDateFormatter ,这是自 PHP5.3 以来的 DateFormatter 的国际版本。

if (version_compare(PHP_VERSION, '5.3.0', '<')) {
    exit ('IntlDateFormatter is available on PHP 5.3.0 or later.');
}    
if (!class_exists('IntlDateFormatter')) {
    exit ('You need to install php_intl extension.');
}
$polishDateFormatter = new IntlDateFormatter(
    'pl_PL',
    IntlDateFormatter::LONG,
    IntlDateFormatter::NONE
);

$now = new DateTime("2013-08-06");
echo $polishDateFormatter->format($now), "\n";

此代码返回我,

6 西尔普尼亚 2013

我希望这是正确的。(我不懂波兰语 ;-)

您还可以检查 IntlDateFormatter::SHORT、MEDIUM 和 FULL 以在构造函数的第二个参数处获取另一个符号。

于 2013-08-06T06:03:50.717 回答
6

你需要两个数组:

$m_en = array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");

$m_pol = array("Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec");

你现在要做的就是:

$workoutSlug = str_replace($m_en, $m_pol, $input);

输入是您要翻译的输入。

于 2013-08-05T23:12:36.787 回答
1

由于您可能不了解世界上所有的语言,因此我认为任何语言都需要此类功能,而英语是一个例外,该规则不会改变任何内容。然后我会在格式类上创建,它将根据语言环境提供有效的日期字符串。

您自己的函数可以实现将月份从Marzecinto替换为的逻辑Marca,因此您存储两个具有适当索引的数组,并根据月份选择数组 1 中的哪个项目应该在返回之前用输出字符串中的 array2 的哪个项目替换。

有时最简单的选择是你能做的最好的。

于 2013-08-05T22:33:00.710 回答
-3

如果您正在寻找 php 中的日期格式,请访问:http: //php.net/manual/en/datetime.format.php

于 2013-08-05T22:25:49.863 回答