- ベストアンサー
日付フォーマット
テーブルから日付データを取得してフォーマットしたいのですがうまくいきません。 DATETIME型の項目に入っている日時(Y-m-d H:i:s)を取得してY/m/dにフォーマットしようと $result = date("Y/m/d", $getdata); としたところ、結果が 1970/01/01 となってしまいました。 $getdataには存在する日時(Y-m-d H:i:s)が入っている事を確認しています 正しくフォーマットするにはどうしたら良いのでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
strtotime()で日付型に変換すれば大丈夫です <?PHP $getdata="2006-12-19 15:18:11"; $result = date("Y/m/d", strtotime($getdata)); print $result; ?>
その他の回答 (3)
- hogemodoki
- ベストアンサー率40% (2/5)
date 関数の2番目の引数は 1970 年 1 月 1 日 00:00:00 GMT からの通算秒 です。 2006-12-19 15:18:11 という文字列しか使えないのであれば、 ここから 上に示した通算秒(整数)に直してください。 1分は 60秒 1時間は 3600秒 一日は・・・・ ですから、ちょっと大変ですができると思います。
お礼
ありがとうございます。 とても参考になりました。
- galluda
- ベストアンサー率35% (440/1242)
がると申します。 とりあえず、関数のリファレンスなりご覧になる事をお勧めいたします。 http://jp2.php.net/manual/ja/function.date.php 以下、引用を少々 説明 string date ( string format [, int timestamp] ) 指定された引数 timestamp を、与えられた フォーマット文字列によりフォーマットし、日付文字列を返します。 タイムスタンプが与えられない場合は、現在のローカル時刻が使われます。 つまり timestamp はオプションであり そのデフォルト値は time() の値です。 timestamp オプションのパラメータ timestamp は、 integer 型の Unix タイムスタンプです。 timestamp が指定されなかった場合のデフォルト値は、現在の時刻です。言い換えると、デフォルトは time() の返り値となります。 ここから概ねわかるかと思うのですが。 > 2006-12-19 15:18:11 という値は「integer 型の Unix タイムスタンプ」ではないので、理解が出来ないために挙動の保証がないものと思われます。 なさりたいことをやる場合。 基本的には、正規表現その他をつかって情報の分解をするところからスタートかと思われます。
お礼
ありがとうございます。 timestampを日付の事だと勘違いしてました。
- hogemodoki
- ベストアンサー率40% (2/5)
print($getdata) とすると、なにが表示されるでしょうか? 数字以外の文字が混ざっていると、正しくフォーマットされません。
お礼
回答ありがとうございます。 具体的に挙げますと 2006-12-19 15:18:11 こういう形で表示されました。 一応trimも使ってみたのですが、結果は同じく1970/01/01になってしまいました。 この形式ではうまく認識してくれないのでしょうか・・・
お礼
ありがとうございます。 無事に出力する事ができました。