date_time_set

関数の概要

PHPの date_time_set 関数は、既存の DateTime オブジェクトの時刻部分を変更するときに使用します。日付部分はそのままで、時間・分・秒を指定した値にセットできるため、日時の一部だけを調整したい場合に便利です。

パラメータの説明

  • $object:時刻を変更したい DateTime オブジェクトを指定します。
  • $hour:セットしたい時間の値(0〜23の整数)を指定します。
  • $minute:セットしたい分の値(0〜59の整数)を指定します。
  • $second(省略可能):セットしたい秒の値(0〜59の整数)を指定します。省略すると0秒になります。

戻り値

変更後の DateTime オブジェクト自身が返されます。これによりメソッドチェーンも可能です。

使用例

基本的な使い方

$date = new DateTime('2024-06-01 12:30:45');
date_time_set($date, 15, 45);
echo $date->format('Y-m-d H:i:s');  // 出力結果: 2024-06-01 15:45:00

ここでは、元の時刻「12:30:45」を「15:45:00」に変更しています。秒を指定していないため、自動で0秒になります。

秒も指定する例

$date = new DateTime('2024-06-01 08:00:00');
date_time_set($date, 9, 15, 30);
echo $date->format('Y-m-d H:i:s');  // 出力結果: 2024-06-01 09:15:30

時間、分に加えて秒も指定し、09:15:30 に時刻を設定しています。

既存のオブジェクトを再利用して時刻を更新

$date = new DateTime('2024-06-01 23:59:59');
date_time_set($date, 0, 0, 0);
echo $date->format('Y-m-d H:i:s');  // 出力結果: 2024-06-01 00:00:00

日付はそのままで、時刻を0時0分0秒にリセットしています。

関連する関数

  • DateTime::setTime() – DateTimeオブジェクトの時刻を変更するメソッド
  • date_modify() – DateTimeオブジェクトに変更を加える関数
  • DateTime::format() – DateTimeオブジェクトの表示形式を指定するメソッド

まとめ

date_time_set 関数は、PHPの DateTime オブジェクトの時刻だけを簡単に変更できる便利な関数です。日付を変えずに午前・午後の時間や分、秒を調整したい場面で役立ちます。また、戻り値として DateTime オブジェクトを返すため、そのまま他のメソッドと連結して使うことも可能です。実務で日付部分をキープしつつ時刻だけを柔軟に設定する際にぜひ利用してみてください。