date_date_set

関数の概要

date_date_setはPHPの組み込み関数で、DateTimeオブジェクトの日付部分(年・月・日)を指定した値に変更するためのメソッドです。既存の日時情報の時間部分はそのままに、日付だけを簡単に更新できるため、日時操作の際に非常に便利です。

パラメータの説明

  • object DateTimeオブジェクト:対象の日付を変更したいDateTimeインスタンスを指定します。
  • year int:設定する年(4桁の西暦)を指定します。
  • month int:設定する月(1~12)を指定します。
  • day int:設定する日(1~31)を指定します。

戻り値

このメソッドは、修正後のDateTimeオブジェクト自身を返します。チェーンメソッドとして利用することも可能です。

使用例

基本的な使い方

$date = new DateTime('2023-06-15 14:30:00');
$date->date_date_set(2024, 1, 5);
echo $date->format('Y-m-d H:i:s'); // 2024-01-05 14:30:00

この例では、2023年6月15日の日時オブジェクトの日付を2024年1月5日に変更しています。時間の部分(14:30:00)はそのまま保持されます。

現在日時の年だけ変更する

$now = new DateTime();
$now->date_date_set(2025, $now->format('m'), $now->format('d'));
echo $now->format('Y-m-d H:i:s');

現在日時の月・日をそのままに、年だけ2025年に変更した例です。時間も元のまま維持されます。

月の終わり日を設定

$date = new DateTime('2023-02-10');
$date->date_date_set(2023, 2, 28);
echo $date->format('Y-m-d'); // 2023-02-28

2月10日の日時オブジェクトの日付部分を2月28日に変更しています。時間部分は元のままです。

関連する関数

  • DateTime::setDate – 同じく日付を設定するメソッドで、date_date_setと同等です。
  • DateTime::setTime – 時刻部分を設定するためのメソッド。
  • DateTime::modify – 日付や時刻を柔軟に変更できる強力なメソッド。

まとめ

date_date_setDateTimeオブジェクトの日付だけを簡単に変更したい時に便利なメソッドです。時間を変更せずに日付だけをセットできるため、日時管理の場面でよく使われます。複雑な日付計算が必要な場合はmodifyと組み合わせて使い分けると効率的です。