Японская дата в этом формате - PullRequest
7 голосов
/ 18 февраля 2010

Я хочу показать дату на японском в этом формате:

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();

Любые улучшения приветствуются.Спасибо.

Ответы [ 5 ]

3 голосов
/ 18 февраля 2010

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

function date_japan() {
  echo date('Y') . '年 ' . date('m') . '月 ' . date('d') . '日';
}
2 голосов
/ 15 августа 2013

С 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";

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

1 голос
/ 16 апреля 2018

Это сообщение довольно старое, но в случае, если кто-то все еще ищет ответ, у меня это сработало:

setlocale(LC_ALL, "ja_JP.utf8"); 
$date_format = "%Y年%B%e日(%a)";                  

$date_string = strftime($date_format, time())
1 голос
/ 24 октября 2014

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

$days = array("日","月","火","水","木","金","土");
$date = @date('Y年 m月 d日 (').($dys[@date("w")]).('曜) ').@date('H:i');
0 голосов
/ 23 октября 2015
$date_japan = date('Y年m月d日', date("w"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...