Интернационализированное форматирование даты с Zend_Date (японский) - PullRequest
0 голосов
/ 06 января 2010

Отказ от ответственности: вам может потребоваться установить шрифт / шрифт, который поддерживает Японский, если вы видите, испортил символы.

Я пытаюсь повторить то, что я делал до сих пор с setlocale и strftime:

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 не будут содержать эти буквы после года / месяца / дня, но будут применяться только к таким языкам, как японский и другие, где это более распространено или, если я неправильно понял, и это не очень распространено, пожалуйста, сообщите мне.

Заранее спасибо.

1 Ответ

0 голосов
/ 08 января 2010

Кажется, мне нужна была константа DATE_LONG, которая внутренне указывает на 'FFFF' - я пытаюсь понять, как класс Date соотносится с классом Locale для генерации всей строки, включая символы, теперь .

Обновление: я продолжал пытаться найти, где он фактически использовал единицы измерения вместо форматов даты, нашел нужные мне данные:

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

Таким образом, он анализирует это и заменяет y, M, d, возвращает отформатированную дату.

...