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

发布于 2024-08-17 14:53:55 字数 998 浏览 6 评论 0原文

免责声明:您可能需要安装 支持的字体/字体 如果你看到乱七八糟的日语 字符。

我正在尝试复制迄今为止使用 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日火曜日

我的第一次尝试我似乎找不到一个工作常量来生成年和日符号。后者使用标准化格式,但我需要对其进行自定义,以便月份前面有一个 0,并且我希望能够更好地控制。

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

提前致谢。

Disclaimer: you might need to install
a font/typeface which supports
Japanese if you see messed up
characters.

I'm trying to replicate what I've been doing so far with setlocale and strftime:

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

Output:

2010年01月06日

Using Zend_Date - but I haven't been able to reproduce the same formatting with the japanese symbols for year, month and day.

Attempt #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');

Output:

2010 1月 004

Attempt #2:

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

Output:

2010年1月5日火曜日

My first attempt I can't seem to find a working constant to produce the YEAR and day symbols. The latter uses a standardized format but I need to customize it so there's a 0 preceding the month, and I want to be more in control.

In the future I may want to make it flexible so for example, en_US dates won't have those letters coming after the year/month/day but it would only apply to languages such as Japanese and others, where it's more common, or if I misunderstood and it isn't really common then please inform me.

Thanks in advance.

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

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

发布评论

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

评论(1

春庭雪 2024-08-24 14:53:55

似乎我需要的是 DATE_LONG 常量,它在内部指向“FFFF” - 我正在尝试了解 Date 类如何与 Locale 类对应以生成整个字符串(包括现在的符号。

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

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

因此它解析此数据并替换 y、M、d,返回格式化日期。

Seems what I needed was the DATE_LONG constant, which internally points to 'FFFF' - I'm trying to learn the inner workings of how the Date class corresponds with the Locale class to generate the whole string including the symbols now.

Update: I kept trying to find where it actually used date units instead of date formats, found the right data I need:

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

So it parses this and replaces the y, M, d, returns the formatted date.

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