波兰语日期格式化

时间:2013-08-05 22:21:34

标签: php date internationalization

美丽的波兰语在使用“2013年3月”(没有日期)与“2013年3月17日”(日期)之类的事情时,使用不同的语法作为月份的名称。

将PHP strftime()%B一起使用,可以为无日案例提供正确的月份名称。如何在日常情况下正确写日期?我是否必须自己编写代码或是否已经支持此类情况?

4 个答案:

答案 0 :(得分:7)

如果你启用了intl扩展,那么自{PHP}之后就有IntlDateFormatter,一个国际版的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";

此代码返回我,

  

2013年6 sierpnia

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

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

答案 1 :(得分:5)

您需要两个阵列:

$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);

输入是您想要翻译的输入。

答案 2 :(得分:1)

由于你可能不知道世界上所有的语言,我会认为任何语言都需要这样的功能,而英语是一个例外,这个规则不会改变任何东西。然后我将在格式类上创建,将根据区域设置提供有效的日期字符串。

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

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

答案 3 :(得分:-2)

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