【PHP】strftime関数でなんかおかしかった。

わけあってxmlをパースしてwebslice用のxmlを吐き出す処理をしてたときの話。

Wed, 27 Jan 2010 16:00:16 +0900 のような書式の最終更新日を取り出して年月日の形に変換する時に date_parse関数を使えば

$dateArray = date_parse('Wed, 27 Jan 2010 16:00:16 +0900');
連想配列で返ってくるから処理しやすい。 ただphpのバージョンが5.2以上だった。 それを設置するサーバーのphpが5.1だったため記述を替える必要があった。

strftimeとstrtotimeを使う

$date = 'Wed, 27 Jan 2010 16:00:16 +0900';
$pubdate = strftime("%Y年%m月%d日",strtotime($date));
echo $pubdate;
//2010年1月%d日
%dが変わって無いんですけどwwwwwwwwwwwwwwwww どこに原因があるかわからずいろいろしてみる

年月日の間に空白を入れてみる。

$date = 'Wed, 27 Jan 2010 16:00:16 +0900';
$pubdate = strftime(" %Y 年 %m 月 %d 日",strtotime($date));
echo $pubdate;
//2010 年 1 月 27 日
どうやらマルチバイトの月日が怪しい?。

日だけ分離してみる

$date = 'Wed, 27 Jan 2010 16:00:16 +0900';
$pubdate = strftime(" %Y年%m月%d",strtotime($date))."日";
echo $pubdate;
//2010年1月%d日
えー・・・ということはだな・・・

ならばこうしてやる。

$date = 'Wed, 27 Jan 2010 16:00:16 +0900';
$pubdate = str_replace(' ', '', strftime("%Y 年 %m 月 %d 日", strtotime($date)));
echo $pubdate;
//2010年1月27日
できた!

・・・

正規表現使えばいいじゃんね。 まぁそういわないで・・・ なんでこうなったかはわかりませんし。 他でおきるとも思えないけど。

実際こうなったので。


Tags:

 
 
 

コメントをどうぞ