2010-01-06 3 views
0

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

Я пытаюсь повторить то, что я делал до сих пор с 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日火曜日 

Моя первая попытка: я не могу найти рабочую константу для создания символов YEAR и day. Последний использует стандартизованный формат, но мне нужно его настроить, поэтому перед месяцем стоит 0, и я хочу больше контролировать.

В будущем я, возможно, захочу сделать его гибким, так что, например, даты en_US не будут иметь эти буквы, следующие после года/месяца/дня, но это применимо только к таким языкам, как японский и другие, где это больше общий, или если я неправильно понял, и это не очень распространено, пожалуйста, сообщите мне.

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

ответ

0

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

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

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

Так он разбирает это и заменяет у, М, д, возвращается отформатированная дата.

Смежные вопросы