2010-02-18 6 views
7

Я хотел показать даты на японском языке в этом формате:Японский Дата в этом формате

2010 年 2 月 18 日 (木)

, который переводит:

18 февраля 2010 года (чт)

в PHP

Это код, у меня есть:

function date_japan() { 
    $dy = date("w"); 

    $dys = array("日","月","火","水","木","金","土"); 
    $dyj = $dys[$dy]; 
     echo date('Y') . '年 ' . date('m') . '月 ' . date('d') . '日' . '(' . $dyj . ')'; 
    } 
    date_japan(); 

Любые улучшения были бы высоко оценены. Благодарю.

ответ

2

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

function date_japan() { 
    echo date('Y') . '年 ' . date('m') . '月 ' . date('d') . '日'; 
} 
+1

то, что на самом деле, вы даже попробовать? – Sarfraz

+1

年 -> означает год.月 -> означает месяц.日 -> означает день. – Yada

+1

Код работает очень хорошо. Пропущенный день? (thu) Я предполагаю, что это означает, что мы должны иметь какой-то массив со всеми днями на японском, которые затем показываются в зависимости от дня? $ dys = array ("日", "月", "火", "水", "木", "金", "土"); – Cameron

2

С IntlDateFormatter, вы можете форматировать любые (ну, поддерживаемые языки).

if (version_compare(PHP_VERSION, '5.3.0', '<')) { 
    exit ('IntlDateFormatter is available on PHP 5.3.0 or later.'); 
}  
if (!class_exists('IntlDateFormatter')) { 
    exit ('You need to install php_intl extension.'); 
} 
$longFormatter = new IntlDateFormatter(
    'ja_JP', 
    IntlDateFormatter::LONG, 
    IntlDateFormatter::NONE 
); 
$weekdayFormatter = new IntlDateFormatter(
    'ja_JP', 
    IntlDateFormatter::NONE, 
    IntlDateFormatter::NONE, 
    date_default_timezone_get(), 
    IntlDateFormatter::GREGORIAN, 
    'EEEEE' // weekday in one letter 
); 

$datetime = new DateTime("2010-02-18"); 
echo $longFormatter->format($datetime) 
    . '(' . $weekdayFormatter->format($datetime) . ")\n"; 

Это должно дать вам,

2010 年 2 月 18 日 (木)

и вы также можете получить другой язык с разными названиями локали.

Если все в порядке с форматом

2010 年 2 月 18 日 木 曜 日

который PHP (и ICU библиотека PHP внутренний вызов) считает, что правильный формат для полного японского дата, код будет проще. Например,

$fullFormatter = new IntlDateFormatter(
    'ja_JP', 
    IntlDateFormatter::FULL, 
    IntlDateFormatter::NONE 
); 
$datetime = new DateTime("2010-02-18"); 
echo $fullFormatter->format($datetime) . "\n"; 

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

1

вот что я использовал ... Разорванный из кода Камерона ;-)

$days = array("日","月","火","水","木","金","土"); 
$date = @date('Y年 m月 d日 (').($dys[@date("w")]).('曜) ')[email protected]('H:i'); 
0
$date_japan = date('Y年m月d日', date("w")); 
+0

Пожалуйста, отредактируйте ваше сообщение и объясните свой ответ. –

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