• ベストアンサー

PHP 日付の加算について

phpによってデータベースから取り出した日付に2日プラスして出力したいのですがどうしたら宜しいでしょうか? ちなみにcakephpによって取り出されているので、 $carlist['Car']['buy_date'] となっており、中には2014-1-1が入っています。 出力が2014-1-3になるようにしたいです。 strtotimeなどいろいろ試しましたが出来ませんでした。 よろしくお願いします

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

  • ベストアンサー
noname#244856
noname#244856
回答No.1

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"; ?>

kwshsh219
質問者

お礼

To_aru_Userさん ありがとうございます。 上記と訂正のアドバイスを受け、改めて実行したところ上手く行きました。 マニュアルのことも含め、丁寧なご説明ありがとうございました。

その他の回答 (3)

noname#244856
noname#244856
回答No.4

訂正: Y-m-d じゃなくて Y-n-j でしたね。 あと一応strtotime関数のマニュアルより... 注意: この関数を使って日付の足し算や引き算を行うことはおすすめできません。 PHP 5.3 以降なら DateTime::add() や DateTime::sub() を、そして PHP 5.2 なら DateTime::modify() を使いましょう。 他の人の回答を否定するわけではないですが、マニュアルはこちらを推奨しているようです。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

まぁ「2014-1-1」が文字列型だとわかっているなら 文字列を連結してstrtotimeするという考えもあります <?php $str = '2014-1-1'; echo date('Y-n-j', strtotime("$str +2 day" ));

kwshsh219
質問者

お礼

yambejpさん ご回答ありがとうございました。 DateTime::addで解決することが出来ました。 またよろしくお願い致します。 本当にありがとうございました。

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.2

>strtotimeなどいろいろ試しましたが出来ませんでした。 どのように試したのでしょうか(ソースが何も提示されていないのでわかりません)。 >中には2014-1-1が入っています。 date型ならそのまま、文字列型ならstrtotimeで変換して使えばいいと思います。 <?php $str = '2014-1-1'; echo date('Y-n-j', strtotime('+2 day', strtotime($str)));

kwshsh219
質問者

お礼

agunuzさん ご指摘通りこれからはソースコードも載せるよう心がけたいと思います。 具体的な例も頂きありがとうございました。 またよろしくお願い致します。

関連するQ&A