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

全く初心者の質問ですみません。
設定日から指定日数後の日付を取得したいと思っています。
echo $date // 正しい設定日がY-m-dで表示されます

date ("Y-m-d", mktime (0,0,0,date('m',$date),date('d',$date) + $add_date,date('Y',$date)));

で取得できると思ったのですが、常に1970-01-01が返されます。
先ほどecho $dateで設定した日付が表示されるにもかかわらず、
print_r(getdate($add_date));
とすると
[seconds] => 31
[minutes] => 33
[hours] => 9
[mday] => 1
[wday] => 4
[mon] => 1
[year] => 1970
[yday] => 0
[weekday] => Thursday
[month] => January
[0] => 2011
と1970-01-01が返されます。
何故でしょうか?

A 回答 (2件)

>date ("Y-m-d", mktime (0,0,0,date('m',$date),date('d',$date) + $add_date,date('Y',$date)));



っていうのは$dateの$add_date日後を得たいということですから
$add_dateが数値になっていますか?
    • good
    • 0
この回答へのお礼

数値になっていなかったようです。
ありがとうございました。

お礼日時:2011/09/21 15:12

date() の第二引数はタイムスタンプですが、"Y-m-d"形式になっているという $date が渡されています。

そうすると、例えば 2011-09-20 などが 無理やりintとして評価されるため、つまりタイムスタンプの起点(1970/01/01/00:00) から 2011 秒後の時間が返されているのでしょう。
$dateをタイムスタンプに直して、date('m',$timestamp) 等とすればOKかと。

ただ、指定日数後の日付なら strtotimeが簡単かも知れません。
$date = "2011-09-20";
$add_date = "+12 day";
echo date("Y-m-d", strtotime($add_date, strtotime($date)));

下記の日付計算のサンプルが参考になるはず
http://jp2.php.net/manual/ja/function.strtotime. …
    • good
    • 0
この回答へのお礼

できました。
あっさりできてしまって気抜けしました。
ありがとうございました。

お礼日時:2011/09/21 15:11

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