2010-02-18 10 views
7

ich in diesem Format zeigen das Datum in der japanischen wollen:japanischen Datum in diesem Format

2010 年 2 月 18 日 (木)

was übersetzt:

18. Februar 2010 (Do)

in PHP

Dies ist der Code, den ich habe:

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

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

Alle Verbesserungen würden sehr geschätzt. Vielen Dank.

Antwort

2

Die einfachste und pragmatische Art und Weise ist wahrscheinlich eine Wrapper-Funktion um die Datumsfunktion zu erstellen:

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

, was das eigentlich ist, haben Sie es selbst versuchen? – Sarfraz

+1

> -> bedeutet Jahr.月 -> bedeutet Monat.日 -> bedeutet Tag. – Yada

+1

Der Code funktioniert ziemlich gut. Fehlt der Tag? (thu) Ich vermute, das bedeutet, dass wir eine Art Array mit allen Tagen auf Japanisch haben müssen, die dann basierend auf dem Tag gezeigt werden? $ dys = array ("日", "月", "火", "水", "木", "金", "土"); – Cameron

2

Mit IntlDateFormatter können formatiert werden Sie (na ja, nicht unterstützt) Sprachen.

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

Dies sollte Sie geben,

2010 年 2 月 18 日 (木)

und Sie auch eine andere Sprache mit verschiedenen locale Namen bekommen.

Wenn Sie sind in Ordnung mit dem Format

2010 年 2 月 18 日 木 曜 日

die PHP (und ICU-Bibliothek PHP ruft intern) das richtige Format für die vollständige japanische Datum denkt, die Code wäre einfacher. So,

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

Dann werden Sie sich nie sorgen, wenn Sie in Zukunft weitere Sprachen Unterstützung hinzufügen müssen. Ihr Code ist frei von Japanisch-spezifischer Handhabung.

1

hier ist das, was ich früher ... Zerrissen von Camerons Code ;-)

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

Bitte bearbeiten Sie Ihren Beitrag und erklären Sie Ihre Antwort. –