date_add関数の基本的な構文は次のとおりです。
<span><span><span class="hljs-title function_ invoke__">date_add</span></span><span>(DateTime </span><span><span class="hljs-variable">$object</span></span><span>, DateInterval </span><span><span class="hljs-variable">$interval</span></span><span>) : DateTime
</span></span>
$オブジェクト:現在の時刻を表すDateTimeオブジェクト。
$間隔:追加する時間間隔を表すDateIntervalオブジェクト。
この関数は新しいDateTimeオブジェクトを返します。これは、時間間隔が追加された後の結果です。
Date_Addを使用する前に、最初にDateTimeオブジェクトを作成する必要があります。これは通常、新しいdateTime()で達成するか、特定の日付を指定して作成できます。
<span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateTime</span></span><span>(</span><span><span class="hljs-string">'2025-06-16 14:00:00'</span></span><span>);
</span></span>
このようにして、2025年6月16日に14:00:00を表すDateTimeオブジェクトを作成します。
DateIntervalオブジェクトは、時間間隔を表します。このオブジェクトは、形式でPから始まる文字列で作成できます。
P :期間を示します
Y (年)、 M (月)、 D (日)、 H (時間)、 I (分)、 S (秒)などの時間単位が続きます。
たとえば、1日を表すためにP1Dを使用し、 PT2Hを2時間使用できます。
<span><span><span class="hljs-variable">$interval</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateInterval</span></span><span>(</span><span><span class="hljs-string">'P1D'</span></span><span>); </span><span><span class="hljs-comment">// 増加1空</span></span><span>
</span></span>
DateTimeおよびDateIntervalオブジェクトを使用すると、 Date_Add関数を使用して時間計算を実行できます。たとえば、 2025-06-16 14:00:00に5日を追加するとします。
<span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateTime</span></span><span>(</span><span><span class="hljs-string">'2025-06-16 14:00:00'</span></span><span>);
</span><span><span class="hljs-variable">$interval</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateInterval</span></span><span>(</span><span><span class="hljs-string">'P5D'</span></span><span>); </span><span><span class="hljs-comment">// 増加5空</span></span><span>
</span><span><span class="hljs-title function_ invoke__">date_add</span></span><span>(</span><span><span class="hljs-variable">$date</span></span><span>, </span><span><span class="hljs-variable">$interval</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$date</span></span><span>-></span><span><span class="hljs-title function_ invoke__">format</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>);
</span></span>
出力の結果は次のとおりです。
<span><span><span class="hljs-number">2025-06-21 14:00:00</span></span><span>
</span></span>
ご覧のとおり、 Date_Addは5日間元の日付を追加し、新しい日付を取得しました。
日数を増やすことに加えて、時間、分などを増やすこともできます。たとえば、特定の時点で3時間45分を追加する必要があるとします。
<span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateTime</span></span><span>(</span><span><span class="hljs-string">'2025-06-16 14:00:00'</span></span><span>);
</span><span><span class="hljs-variable">$interval</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateInterval</span></span><span>(</span><span><span class="hljs-string">'PT3H45M'</span></span><span>); </span><span><span class="hljs-comment">// 増加3時間45分</span></span><span>
</span><span><span class="hljs-title function_ invoke__">date_add</span></span><span>(</span><span><span class="hljs-variable">$date</span></span><span>, </span><span><span class="hljs-variable">$interval</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$date</span></span><span>-></span><span><span class="hljs-title function_ invoke__">format</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>);
</span></span>
出力の結果は次のとおりです。
<span><span><span class="hljs-number">2025-06-16 17:45:00</span></span><span>
</span></span>
負の値で時間を短縮できます。 2日間時間を差し引くと、これを行うことができます。
<span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateTime</span></span><span>(</span><span><span class="hljs-string">'2025-06-16 14:00:00'</span></span><span>);
</span><span><span class="hljs-variable">$interval</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateInterval</span></span><span>(</span><span><span class="hljs-string">'P2D'</span></span><span>); </span><span><span class="hljs-comment">// 2空</span></span><span>
</span><span><span class="hljs-variable">$interval</span></span><span>->invert = </span><span><span class="hljs-number">1</span></span><span>; </span><span><span class="hljs-comment">// それを負の値に反転させます</span></span><span>
</span><span><span class="hljs-title function_ invoke__">date_add</span></span><span>(</span><span><span class="hljs-variable">$date</span></span><span>, </span><span><span class="hljs-variable">$interval</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$date</span></span><span>-></span><span><span class="hljs-title function_ invoke__">format</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>);
</span></span>
出力の結果は次のとおりです。
<span><span><span class="hljs-number">2025-06-14 14:00:00</span></span><span>
</span></span>
反転プロパティを1に設定することにより、 DateIntervalは負の時間間隔を表し、それによって時間減算操作を実現します。
Date_Addは、より複雑な時間間隔の使用もサポートしています。たとえば、数年、月、日などを同時に追加できます。
<span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateTime</span></span><span>(</span><span><span class="hljs-string">'2025-06-16 14:00:00'</span></span><span>);
</span><span><span class="hljs-variable">$interval</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateInterval</span></span><span>(</span><span><span class="hljs-string">'P1Y2M5D'</span></span><span>); </span><span><span class="hljs-comment">// 増加1年2数ヶ月5空</span></span><span>
</span><span><span class="hljs-title function_ invoke__">date_add</span></span><span>(</span><span><span class="hljs-variable">$date</span></span><span>, </span><span><span class="hljs-variable">$interval</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$date</span></span><span>-></span><span><span class="hljs-title function_ invoke__">format</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>);
</span></span>
出力の結果は次のとおりです。
<span><span><span class="hljs-number">2026-08-21 14:00:00</span></span><span>
</span></span>
この例では、1年、2か月、5日を追加しました。
Date_Addは、日付と時間を追加および減算するのに役立つPHPの非常に有用な機能です。 DateTimeとDateIntervalオブジェクトを組み合わせることにより、さまざまな時間間隔の計算要件を柔軟に処理できます。複数時間ユニットの日、時間、分、複雑な追加を追加するかどうかにかかわらず、簡単に対処できます。実際の開発では、これらの日付と時刻の操作を習得することが非常に重要であり、処理時間ロジックの効率を大幅に改善できます。