現在フォーマットしているDateTimeオブジェクトがあります
$mytime->format("D d.m.Y")
これにより、必要な形式が正確に得られます。
火5.3.2012
唯一の欠けている点は正しい言語です。 Tue
(Tuesday
)のドイツ語翻訳が必要です。これはDie
(Dienstag
)です。
これにより、適切なロケール設定が得られます
Locale::getDefault()
しかし、私はDateTime::format
使用します。
次のようなことをする方法はありませんか?
$mytime->format("D d.m.Y", \Locale::getDefault());
format
はロケールに注意を払っていないためです。代わりに strftime
を使用する必要があります。
例えば:
setlocale(LC_TIME, "de_DE"); //only necessary if the locale isn't already set
$formatted_time = strftime("%a %e.%l.%Y", $mytime->getTimestamp())
Intl 拡張機能を使用して、日付をフォーマットできます。選択したロケールに従って日付/時刻をフォーマットします。または、 IntlDateFormatter::setPattern()
でオーバーライドできます。
目的の出力形式にカスタムパターンを使用した簡単な例は、次のようになります。
$dt = new DateTime;
$formatter = new IntlDateFormatter('de_DE', IntlDateFormatter::SHORT, IntlDateFormatter::SHORT);
$formatter->setPattern('E d.M.yyyy');
echo $formatter->format($dt);
次のものを出力します(少なくとも今日は)。
ディ4.6.2013
Edit:ああブー!古代の質問に答えたのは、いくつかのコメントがリストに盛り上がったからです!少なくともIntlオプションについては今言及されています。