2010-02-18 25 views
7

estoy queriendo mostrar la fecha en japonés en este formato:Fecha japonesa en este formato

2010 年 2 月 18 日 (木)

que se traduce en:

18 de febrero de, 2010 (Jue)

en PHP

Este es el código que tengo:

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

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

Cualquier mejora sería muy apreciada. Gracias.

Respuesta

2

La manera más fácil y más pragmática es, probablemente, para crear una función de envoltura alrededor de la función de la fecha:

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

lo que realmente es, qué siquiera intentarlo? – Sarfraz

+1

年 -> significa año.月 -> significa mes.日 -> significa día. – Yada

+1

El código funciona bastante bien. Perdiendo el día sin embargo? (jue) Supongo que eso significa que tendremos que tener algún tipo de matriz con todos los días en japonés que luego se muestre según el día. $ dys = array ("日", "月", "火", "水", "木", "金", "土"); – Cameron

2

Con IntlDateFormatter, puede dar formato a cualquier (así, apoyados) idiomas.

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

Esto debe darle,

2010 年 2 月 18 日 (木)

y también se puede obtener otro idioma con diferentes nombres específicos.

Si estás bien con el formato

2010 年 2 月 18 日 木 曜 日

el que PHP (y UCI librería PHP llama internamente) piensa que el formato adecuado para la plena fecha japonés, el el código sería más simple. De esta manera,

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

Entonces, nunca tendrá que preocuparse si necesita agregar más soporte de idiomas en el futuro. Su código estará libre del manejo específico de japonés.

1

Esto es lo que solía ... arrancado de código de Cameron ;-)

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

Edite su publicación y explique su respuesta. –