- ベストアンサー
PHP 日付の加算について
phpによってデータベースから取り出した日付に2日プラスして出力したいのですがどうしたら宜しいでしょうか? ちなみにcakephpによって取り出されているので、 $carlist['Car']['buy_date'] となっており、中には2014-1-1が入っています。 出力が2014-1-3になるようにしたいです。 strtotimeなどいろいろ試しましたが出来ませんでした。 よろしくお願いします
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
DateTimeオブジェクト使うときれいにできますよ。 DateTime::add http://php.net/manual/ja/datetime.add.php <?php $date = new DateTime('2014-1-1'); $date->add(new DateInterval('P2D')); echo $date->format('Y-m-d') . "\n"; ?>
その他の回答 (3)
訂正: Y-m-d じゃなくて Y-n-j でしたね。 あと一応strtotime関数のマニュアルより... 注意: この関数を使って日付の足し算や引き算を行うことはおすすめできません。 PHP 5.3 以降なら DateTime::add() や DateTime::sub() を、そして PHP 5.2 なら DateTime::modify() を使いましょう。 他の人の回答を否定するわけではないですが、マニュアルはこちらを推奨しているようです。
- yambejp
- ベストアンサー率51% (3827/7415)
まぁ「2014-1-1」が文字列型だとわかっているなら 文字列を連結してstrtotimeするという考えもあります <?php $str = '2014-1-1'; echo date('Y-n-j', strtotime("$str +2 day" ));
お礼
yambejpさん ご回答ありがとうございました。 DateTime::addで解決することが出来ました。 またよろしくお願い致します。 本当にありがとうございました。
- agunuz
- ベストアンサー率65% (288/438)
>strtotimeなどいろいろ試しましたが出来ませんでした。 どのように試したのでしょうか(ソースが何も提示されていないのでわかりません)。 >中には2014-1-1が入っています。 date型ならそのまま、文字列型ならstrtotimeで変換して使えばいいと思います。 <?php $str = '2014-1-1'; echo date('Y-n-j', strtotime('+2 day', strtotime($str)));
お礼
agunuzさん ご指摘通りこれからはソースコードも載せるよう心がけたいと思います。 具体的な例も頂きありがとうございました。 またよろしくお願い致します。
お礼
To_aru_Userさん ありがとうございます。 上記と訂正のアドバイスを受け、改めて実行したところ上手く行きました。 マニュアルのことも含め、丁寧なご説明ありがとうございました。