• ベストアンサー

取り出した日付の表示

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

  • PHP
  • 回答数4
  • ありがとう数4

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

  • ベストアンサー
  • 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

  • PHPで指定した日付の1ケ月前表示

    MySQLにある日付を拾ってきて表示しています。 <?php echo $row_target_date['ap_date']; ?> 上記のPHPでは、MySQLのテープルのap_dateカラムにある日付を拾ってきて表示するようにしています。 この1ケ月前を表示したいと考えています。 <?php echo "1月前:" . date("Y/m/d",strtotime("-1 month" ,strtotime("echo $row_target_date['ap_date']"))) . "<BR>"; ?> では表示できませんでした。 表示方法についてご指導いただきたくお願い致します。

    • ベストアンサー
    • PHP
  • MySQLのデータベースを呼んで日付表示をする点で困っています。

    MySQLのデータベースを呼んで日付表示をする点で困っています。 フィールド名:k_pvm 型:DATE データ:2009-12-21 phpでキーを元に呼び出して表示しています。表示形式は、d-m-Yで21-12-2009と表示させたいのですが、うまくできません。 echo "<tr><td>Rekisteri: </td><td><input type='hidden' name='kpv'>" . date('d-m-Y', $row['k_pvm']) . "</td></tr>"; 表示> 01-01-1970 以下、日付データ部分を変えて試してみました。 date($row['k_pvm']) > 2009-12-21 $row['k_pvm'] > 2009-12-21 date('d-m-Y') > 2009-12-22 (試した当日の日付) 試した3点については理解できますが、呼び出したデータに表示形式を指定するとどうして、01-01-1970を表示するのか解りません。直接dateで表示するのではなく、何か手順を踏まないといけないのでしょうか。

    • ベストアンサー
    • MySQL
  • テキストボックスに日付・時刻を表示したい

    こんにちは。 PHP5+MySQLで開発を行っています。 MySQLより取得したdatetime型のDATEをテキストボックスに表示させたいのですが、日付のみ表示され時刻部分は表示されません。 何か特別な処理が必要なのでしょうか? *---------------------------------------------* 例:$row['DATE']="2009-12-04 13:04:56" <ソース> $date=$row['DATE']; print "<input type='text' name=date size='30' value=".$date.">"; <表示時> 2009-12-04 ("13:04:56"部分が表示されない)

    • ベストアンサー
    • PHP
  • timestampの日付の表示変換

    Mysqlのデータベースの中にある フィールド名: date_time 種別: timestamp を下記のPHPコードですると、 echo $row['date_time']; 下記のように表示されます。 2008-02-04 00:00:00 これを、Monday, February 4, 2008 と表示させたいのですが、 どのように日付表示を変換すればよいのか分かりません。 どなたか教えてもらえますか? 宜しく御願いします。

    • 締切済み
    • PHP
  • 指定の日付の何時間後

    DBから持ってきた日付(例:2008/06/23 5:30)の6時間後を作り変数に格納したいのですがよいやり方はありませんか。 strtotime()関数を使ってみてもうまくいきません。 $rokujikango = date("y/m/d G:i",strtotime('+6 hour',$timeFrimDb)); としてもうまくいかないので困っています。

    • ベストアンサー
    • PHP
  • MySQLのdate型をphpで○年○月○日と表示したい

    MySQL5+PHP5の環境でMySQLのフィールドにdate型で2008-09-25のように本の発売日がデータが格納されています。 PHPで2008-09-25を2008年9月25日というように表示したいのですが、どのような関数を使えばいいのでしょうか。 やりたいことは、本の発売日をphpのフォームからMySQLに格納して、2008年9月25日のように自由に整形表示したいです。 また、月別のデータ表示や日付の計算なんかもしたいのですが、このような場合、MySQL側をdate型にしないで他の型にしたほうがいいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • 一行で表示させたい。

    質問は2つあります。 (1) <table border="1"> <td>日付</td> <td>曜日</td> <?php // 時間表示 while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { $timeid = $row["timeid"]; $jikan = cnv_dispstr($row["jikan"]); ?> <td><?php echo $jikan ?></td> <?php } ?> </tr> <?php  $lastd = date("d", mktime(0, 0, 0, $mm + 1, 0, $yyyy)); for ($i = 1; $i <= $lastd; $i++) { $ts = mktime(0, 0, 0, $mm, $i, $yyyy); $ymd = date("Y/m/d", $ts); //予約者を表示してる $ymdstr = strftime("%Y年%m月%d日(%a)", $ts); ?> <td><?php echo $ymd ?></td> <?php //曜日表示 $aday = array("日", "月", "火", "水", "木", "金", "土"); $w = date("w", $ts); printf('<td style="color:%s;background-color:%s;"><span style = "font-size:15pt">%s</span></td>' ,$textcolor[$w],$backcolor[$w], $aday[$w]); ?> <?php// 時間ごとの予約表示 $res = mysql_query($sql, $conn) or die("データ抽出エラー"); while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { $timeid = $row["timeid"]; $jikan = cnv_dispstr($row["jikan"]); $link = $_SERVER["PHP_SELF"]. "?hyouji=kousin&hiduke=".$ymd."&timeid=".$timeid; ?> <td><a href="<?php echo $link //予約者からリンクが外れる ?>"> <?php echo yoyakuchk($ymd,$timeid) ?></a></td> <?php } ?> </tr> <?php } ?> </table> を実行すると 9:00|9:30|10:00|.... 12/1 ○  ○  ○ 12/2鈴木  ○  ○ 12/3 ○ 山田 ○ と実行されます。 これを今日の日付だけを表示させたいのでうがうまくいかずに困っています。 (2)カレンダーの日付をクリックしたら、(1)の一行で表示している予約できる画面を表示させたいのこっちもうまくいかずに困っています。 例えば、 カレンダーで12月1日をクリックしたら、 9:00|9:30|10:00|.... 12/1 ○  ○  ○ が表示できるようにしたいです。 いい方法がありましたら、よろしくお願いします。

    • 締切済み
    • PHP
  • 日付の比較方法

     お世話になります。  新規で日付を入力する際に、既にDBに存在している日付を入力するとエラーとなる仕組みを考えていますが、うまくいきませんので、助力をお願いいたします。 MySQLのDBにはDATE型にて日付が「2007-06-26」といった形式にて保存されています。 php上から日付の入力を行う際には、「20070626」と入力しています。  MySQLコンソール上では、「2007-06-26」と「20070626」は同じものとして扱ってくれますが、php上では違うものとして扱ってしまうらしく、比較を行うことができません    この数字を比較する手段が思いつきませんので、ご助力よろしくお願いします。 MySQL 5.0 PHP 5.2.1

    • ベストアンサー
    • PHP
  • セレクトボックスの連動処理

    お世話になります。 JavaScript勉強中のもので、サンプルソースを見つけることができなかったので、質問させてください。 http://javascriptmarket.com/script/jsm07.html http://www.alink.co.jp/tech/blog/sample_code/js/team_json_20090404.html やりたいイメージとしては、上記のページのようなことです。 具体的には、日付の入るセレクトボックスを2つ用意し、 片方のセレクトボックスの日付を選択すると、もう片方のセレクトボックスに●日後の日付選択肢が表示される。 ということをしたいと思っています。 元々の日付の選択肢が静的であれば上記URLを参考にすれば作れる自信があるのですが、動的なものであまり自信がありません。。。 以下実際に作ったコードです。 (PHPで2つ目のセレクトボックスには3日後の日付が表示されるようにしています。) ---------------------------------------------------------- //日付 for($a = 0; $a < 14; $a++) { $timestamp[] = strtotime("+$a day"); } $day_set = array( "0"=>"▲日付を選んで下さい", "1"=>date( 'Y/m/d', $timestamp[0] ) , "2"=>date( 'Y/m/d', $timestamp[1] ) , "3"=>date( 'Y/m/d', $timestamp[2] ) , "4"=>date( 'Y/m/d', $timestamp[3] ) , "5"=>date( 'Y/m/d', $timestamp[4] ) , "6"=>date( 'Y/m/d', $timestamp[5] ) , "7"=>date( 'Y/m/d', $timestamp[6] ) , "8"=>date( 'Y/m/d', $timestamp[7] ) , "9"=>date( 'Y/m/d', $timestamp[8] ) , "10"=>date( 'Y/m/d', $timestamp[9] ) , "11"=>date( 'Y/m/d', $timestamp[10] ) , "12"=>date( 'Y/m/d', $timestamp[11] ) , "13"=>date( 'Y/m/d', $timestamp[12] ) , "14"=>date( 'Y/m/d', $timestamp[13] ) ); //お渡し日付セット for($a = 3; $a < 17; $a++) { $timestamp2[] = strtotime("+$a day"); } $day2_set = array( "0"=>"▲日付を選んで下さい", "1"=>date( 'Y/m/d', $timestamp2[0] ) , "2"=>date( 'Y/m/d', $timestamp2[1] ) , "3"=>date( 'Y/m/d', $timestamp2[2] ) , "4"=>date( 'Y/m/d', $timestamp2[3] ) , "5"=>date( 'Y/m/d', $timestamp2[4] ) , "6"=>date( 'Y/m/d', $timestamp2[5] ) , "7"=>date( 'Y/m/d', $timestamp2[6] ) , "8"=>date( 'Y/m/d', $timestamp2[7] ) , "9"=>date( 'Y/m/d', $timestamp2[8] ) , "10"=>date( 'Y/m/d', $timestamp2[9] ) , "11"=>date( 'Y/m/d', $timestamp2[10] ) , "12"=>date( 'Y/m/d', $timestamp2[11] ) , "13"=>date( 'Y/m/d', $timestamp2[12] ) , "14"=>date( 'Y/m/d', $timestamp2[13] ) ); <select name="day" style="margin-right: 50px"> <?php foreach ($day_set as $key => $value): ?> <option value="<?php echo $value; ?>"><?php echo $value; ?></option> <?php endforeach; ?> </select> <select name="day2" style="margin-right: 50px"> <?php foreach ($day2_set as $key => $value): ?> <option value="<?php echo $value; ?>"><?php echo $value; ?></option> <?php endforeach; ?> </select>

  • 日付

    PHP 5.1.6 MySQL 5.0.45 で作成したアンケートフォームがあるんですが、フィールドの中に日付を設けています。PHPで作られた集計画面をダウロードすると日付が 2.00901E+13 となります。 エクセルで日付表示にしても####になります。日付を表示するにはどうしたらいいのでしょうか?

専門家に質問してみよう