• ベストアンサー

DateTime型に時間だけを加算したい

こんばんは。 phpで時間を処理したいと思っているのですが、 DateTime型が便利なので使っています。 時間だけを加算したい場合はどのようにすればよいのでしょうか? $date = new DateTime(); としたときに時間 "01:23:34" を加算したいのですが 日時を加算とかは事例が出てくるのですが時間だけと なると分かりません。 教えていただけないでしょうか。

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

  • ベストアンサー
  • Proof4
  • ベストアンサー率78% (151/192)
回答No.1

DateTimeオブジェクトに時間だけを加算する関数を作成しました。 DateInterval オブジェクトを作成し、DateTime::addを利用することで時間を加算することができます。 function addTime($date, $timeInterval){  $units = [];  // ':'で時,分,秒に分割  foreach(explode(':', $timeInterval) as $t){   // 先頭の0を除去して$unitsに追加   $trimmed = ltrim($t, '0');   $units[] = empty($trimmed) ? 0 : $trimmed;  }  // DateIntervalオブジェクトを作成し加算  $interval = new DateInterval("PT${units[0]}H${units[1]}M${units[2]}S");  return $date->add($interval); } $date = new DateTime(); echo date_format(addTime($date, '01:23:34'), 'Y/m/d H:i:s'); ※OKWAVEの仕様上、インデントを全角スペースで表現しています。コピペの際はご注意ください。 https://www.php.net/manual/ja/datetime.add.php https://www.php.net/manual/ja/dateinterval.construct.php

TeijigoTeatime
質問者

お礼

なるほど、DateInterval の使い方イマイチだったのですがとても参考になりました。 無事解決しました。 ありがとうございます。 ※ いろいろバタバタしてしまいお返事が遅れました。失礼いたしました。

関連するQ&A