- ベストアンサー
DateTime型に時間だけを加算したい
こんばんは。 phpで時間を処理したいと思っているのですが、 DateTime型が便利なので使っています。 時間だけを加算したい場合はどのようにすればよいのでしょうか? $date = new DateTime(); としたときに時間 "01:23:34" を加算したいのですが 日時を加算とかは事例が出てくるのですが時間だけと なると分かりません。 教えていただけないでしょうか。
- みんなの回答 (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
お礼
なるほど、DateInterval の使い方イマイチだったのですがとても参考になりました。 無事解決しました。 ありがとうございます。 ※ いろいろバタバタしてしまいお返事が遅れました。失礼いたしました。