當前位置: 首頁> 最新文章列表> 如何用date_add函數在PHP中進行時間區間的計算?實用應用分享

如何用date_add函數在PHP中進行時間區間的計算?實用應用分享

gitbox 2025-06-24

date_add函數簡介

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對象,這個對像是經過時間區間加上後的結果。

創建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 對象

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>

使用date_add 進行時間計算

有了DateTimeDateInterval對象之後,我們就可以使用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>-&gt;</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 天,得到了新的日期。

其他應用示例

1. 增加小時和分鐘

除了增加天數,我們也可以增加小時、分鐘等。例如,假設我們想在某個時間點上增加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>-&gt;</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. 減少時間

我們可以通過負值來減少時間。假設我們想將時間減去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>-&gt;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>-&gt;</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就會表示負的時間間隔,從而實現時間的減法操作。

3. 使用複雜的時間間隔

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>-&gt;</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 中一個非常有用的函數,可以幫助我們進行日期和時間的加減操作。通過結合DateTimeDateInterval對象,我們可以靈活地處理各種時間區間的計算需求。無論是增加天數、小時、分鐘,還是複雜的多個時間單位的加法,都可以輕鬆應對。在實際開發中,掌握這些日期時間的操作是十分重要的,能夠大大提高我們處理時間邏輯的效率。