- ベストアンサー
取り出した日付の表示
phpにてDBに格納されている日付データを取り出した際にデフォルトで "2007-06-04"のように表示されてしまいますが、これを "07/06/04"や"07.06.04"のように表示するにはどうすればよいのでしょうか? MySQLのフィールドタイプはdateに設定しています。 print date(Y/m/d,"$row["日付フィールド"]");とやるとなぜか、 "1970/01/01"と表示されてしまいます。 普通に、print $row["日付フィールド"]");とやると 2007-06-04と出てしまいます。 どうぞ宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
$row["日付フィールド"] の形式に問題なければstrtotime()が使えます。 print date("Y/m/d", strtotime($row["日付フィールド"]));
その他の回答 (3)
- moon_night
- ベストアンサー率32% (598/1831)
DBから取り出すときに select DATE_FORMAT(date,"%Y/%m/%d") from table; とすればいいのではないでしょうか。 http://dev.mysql.com/doc/refman/4.1/ja/date-and-time-functions.html
お礼
ご回答ありがとうございます。DBから表示形式を指定して取り出すこともできるのですね。大変参考になりました。ありがとうございます!
- tecinfo
- ベストアンサー率52% (32/61)
よく考えたら、 <?php $string = ereg_replace("-", "/", $row["日付フィールド"]); print $string; ?> で文字列として"-"を"/"に置換した方が速いですね。 先の方法も、より複雑な処理が必要な時に有用だと思いますが。
お礼
なるほど、このような方法もあるのですね。 今回はstrtotimeを使いましたが、別の機会で利用できそうなのでメモに残しておこうと思います。ありがとうございました!
- tecinfo
- ベストアンサー率52% (32/61)
date関数の第2引数はint型(整数型)ですので、"2007-06-04"という文字列を入れるとUNIX TimeStampの0,つまり1970/01/01になってしまいます。 string date ( string $format [, int $timestamp] ) 次のような処理はどうでしょうか? <?php // 文字列として日付を処理('-'で分割) $tmp = split('-', $row['日付フィールド']); // UNIX TimeStamp(int型)へ変換 $timestamp = mktime(0,0,0, $tmp[1], $tmp[2], $tmp[0]); // date関数で整形 $string = date("Y/m/d", $timestamp); print $string; ?> * ただし、$row['日付フィールド']にデータが無い場合などのエラー処理は追加してください。
お礼
ありがとうございます。こちらの方法で無事問題解決できました。 dateにはこのような書き方もあるのですね。 勉強になりました。ありがとうございます!