アプリ版:「スタンプのみでお礼する」機能のリリースについて

テーブルから日付データを取得してフォーマットしたいのですがうまくいきません。
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)が入っている事を確認しています
正しくフォーマットするにはどうしたら良いのでしょうか?

A 回答 (4件)

strtotime()で日付型に変換すれば大丈夫です



<?PHP
$getdata="2006-12-19 15:18:11";
$result = date("Y/m/d", strtotime($getdata));
print $result;
?>
    • good
    • 0
この回答へのお礼

ありがとうございます。
無事に出力する事ができました。

お礼日時:2006/12/20 09:24

date 関数の2番目の引数は


1970 年 1 月 1 日 00:00:00 GMT からの通算秒
です。

2006-12-19 15:18:11 という文字列しか使えないのであれば、
ここから 上に示した通算秒(整数)に直してください。

1分は 60秒
1時間は 3600秒
一日は・・・・

ですから、ちょっと大変ですができると思います。

参考URL:http://php.benscom.com/manual/ja/function.date.php
    • good
    • 0
この回答へのお礼

ありがとうございます。
とても参考になりました。

お礼日時:2006/12/20 09:23

がると申します。


とりあえず、関数のリファレンスなりご覧になる事をお勧めいたします。

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 タイムスタンプ」ではないので、理解が出来ないために挙動の保証がないものと思われます。

なさりたいことをやる場合。
基本的には、正規表現その他をつかって情報の分解をするところからスタートかと思われます。
    • good
    • 0
この回答へのお礼

ありがとうございます。
timestampを日付の事だと勘違いしてました。

お礼日時:2006/12/20 09:23

print($getdata) とすると、なにが表示されるでしょうか?


数字以外の文字が混ざっていると、正しくフォーマットされません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
具体的に挙げますと
2006-12-19 15:18:11
こういう形で表示されました。
一応trimも使ってみたのですが、結果は同じく1970/01/01になってしまいました。
この形式ではうまく認識してくれないのでしょうか・・・

お礼日時:2006/12/19 17:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!