日付データを国際的な聴衆に表示する必要があるスクリプトがあります。
「2009年8月25日火曜日提出」
これをフランス語などの「Mar 25Aoû09」に変換する簡単でクリーンな方法はありますか。
インクルードファイルの定数LANG
および$LANGUAGES
配列を設定する&:
if(LANG != 'EN')
{
include $LANGUAGES['LANG'];
}
&含まれているファイルは日と月をマッピングし、適切なロケールに置き換えますか?
ありがとう
デビッド
私はあなたがLOCALEを設定せずにそうすることから逃れることはできないと思います:
<?php
setlocale(LC_ALL, 'fr_FR');
echo strftime("%A %e %B %Y");
?>
Strftimeの詳細: http://us2.php.net/manual/en/function.strftime.php
strftime
関数とsetlocale
関数を使用してこれを行う最善の方法だと思います。ただし、サーバーに必要なロケールがインストールされていない場合は機能しません(現在の質問ではfr_FR
)。
ロケールの変更が失敗した場合、次のコードは例外をスローします
<?php
$result = setlocale(LC_ALL, 'fr_FR');
if($result === false){
throw new \RuntimeException(
'Got error changing locale, check if locale is installed on the system'
);
}
$dayOfMonth = '%e';
//if it is Windows we will use %#d as %e is not supported
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
$dayOfMonth = '%#d';
}
//Mar 25 Aoû 09 - month shortname, day of month, day shortname, year last two digits
echo strftime("%b $dayOfMonth %a %y");
Zend_Date もご覧ください。