views:

170

answers:

1

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.

A: 

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.

meder