• ベストアンサー

取り出した日付の表示

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と出てしまいます。 どうぞ宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.3

$row["日付フィールド"] の形式に問題なければstrtotime()が使えます。 print date("Y/m/d", strtotime($row["日付フィールド"]));

参考URL:
http://jp.php.net/manual/ja/function.strtotime.php
tanaka07
質問者

お礼

ありがとうございます。こちらの方法で無事問題解決できました。 dateにはこのような書き方もあるのですね。 勉強になりました。ありがとうございます!

その他の回答 (3)

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.4

DBから取り出すときに select DATE_FORMAT(date,"%Y/%m/%d") from table; とすればいいのではないでしょうか。 http://dev.mysql.com/doc/refman/4.1/ja/date-and-time-functions.html

tanaka07
質問者

お礼

ご回答ありがとうございます。DBから表示形式を指定して取り出すこともできるのですね。大変参考になりました。ありがとうございます!

  • tecinfo
  • ベストアンサー率52% (32/61)
回答No.2

よく考えたら、 <?php $string = ereg_replace("-", "/", $row["日付フィールド"]); print $string; ?> で文字列として"-"を"/"に置換した方が速いですね。 先の方法も、より複雑な処理が必要な時に有用だと思いますが。

参考URL:
http://jp2.php.net/manual/ja/function.ereg-replace.php
tanaka07
質問者

お礼

なるほど、このような方法もあるのですね。 今回はstrtotimeを使いましたが、別の機会で利用できそうなのでメモに残しておこうと思います。ありがとうございました!

  • tecinfo
  • ベストアンサー率52% (32/61)
回答No.1

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['日付フィールド']にデータが無い場合などのエラー処理は追加してください。

参考URL:
http://jp2.php.net/manual/ja/function.date.php

関連するQ&A