С 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 (и внутренний вызов PHP библиотеки ICU) считает правильным форматом для полной японской даты, код будет проще. Вот так
$fullFormatter = new IntlDateFormatter(
'ja_JP',
IntlDateFormatter::FULL,
IntlDateFormatter::NONE
);
$datetime = new DateTime("2010-02-18");
echo $fullFormatter->format($datetime) . "\n";
Тогда вы никогда не будете беспокоиться, когда вам понадобится добавить поддержку других языков в будущем. Ваш код будет свободен от японской обработки.