使用Zend_Date进行国际化日期格式化(日语)

时间:2010-01-06 05:57:12

标签: zend-framework internationalization zend-date

  

免责声明:您可能需要安装   支持的字体/字体   日语,如果你看到搞砸了   字符。

我试图通过setlocalestrftime复制我迄今为止所做的工作:

setlocale(LC_ALL, 'ja_JP.utf8');
$time = mktime();
echo strftime('%x', $time), '<br>';

输出:

2010年01月06日

使用Zend_Date - 但我无法使用日语符号重现相同的格式,包括年,月和日。

尝试#1:

$locale = new Zend_Locale('ja_JP');

$date = new Zend_Date( strtotime('yesterday'), null, $locale);
//echo $date->toString('YYYY abcdefghijklmnopqrstuvwxy M dE');
echo $date->get('YYYY MMM DD');

输出:

2010 1月 004

尝试#2:

echo $date->get(Zend_Date::DATE_FULL);

输出:

2010年1月5日火曜日

我的第一次尝试似乎找不到工作常数来产生YEAR和Day符号。后者使用标准化格式,但我需要对其进行自定义,以便在月之前有0,我希望能够更好地掌控。

将来我可能想让它变得灵活,例如,en_US日期不会在年/月/日之后出现这些字母,但它只适用于日语和其他语言,这些语言更常见,或者如果我误解了并且这种情况并不常见,请通知我。

提前致谢。

1 个答案:

答案 0 :(得分:0)

似乎我需要的是DATE_LONG常量,它在内部指向'FFFF' - 我正在尝试学习Date类如何与Locale类对应的内部工作方式来生成整个字符串,包括符号现在。

更新:我一直试图找到实际使用日期单位的地方而不是日期格式,找到了我需要的正确数据:

                <dateFormatLength type="long">
                    <dateFormat>
                        <pattern>y年M月d日</pattern>
                    </dateFormat>
                </dateFormatLength>

所以它解析了这个并替换y,M,d,返回格式化的日期。