1

それは私の小さな機能です:

setlocale(LC_TIME, 'de_DE');
$date_array = array($blog_month,$blog_year);
var_dump($date_array); 
$title_date = strftime("%B %Y", mktime(0,0,0, $date_array[0], 0, $date_array[1]));
echo $title_date;

var_dump が与える

array(2) {
  [0]=> int(5)
  [1]=> int(2013)
}

したがって、配列は正しいです。しかし、それ$title_dateは常に間違っています。この特定のケースでは、エコーが表示されますApril 2013。私はそれが与えるをmktimeチェックしたので、それは常に間違っているので、何かが間違っていると思います。timestamp

私はPHPのドキュメントを読みましたが、これはうまくいくはずですが、何が悪いのかわかりません。アイデアや提案はありますか?

宜しくお願いします。

4

1 に答える 1

1

ロケールを設定できず、戻り値を無視している場合、関数setlocaleは戻ります。falseこの場合、呼び出しは失敗し (おそらくde_DEロケールがインストールされていないため?)、strftime日付は英語でフォーマットされます。

一方、0日は「前月の末日」に相当します。mktime5 月 1 日ではなく、4 月 30 日を返すのも同じです。5 月 1 日の場合は、次を使用します。

mktime(0,0,0, $date_array[0], 1, $date_array[1])
于 2013-07-12T09:21:42.450 に答える