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>
$object :一個DateTime對象,表示當前的時間。
$interval :一個DateInterval對象,表示要加上的時間間隔。
該函數返回一個新的DateTime對象,這個對像是經過時間區間加上後的結果。
在使用date_add之前,我們首先需要創建一個DateTime對象。這通常可以通過new 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 ,表示2 小時可以用PT2H 。
<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>
通過設置invert屬性為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對象,我們可以靈活地處理各種時間區間的計算需求。無論是增加天數、小時、分鐘,還是複雜的多個時間單位的加法,都可以輕鬆應對。在實際開發中,掌握這些日期時間的操作是十分重要的,能夠大大提高我們處理時間邏輯的效率。