PHP 中如何相加兩個日期區間
相加兩個日期區間以計算出總的時分時長是一個困擾許多PHP 程式設計師的問題。讓我們嘗試了解如何實現這一操作。
問題描述
使用者希望以以下方式相加兩個日期區間,得到時分格式的總時長:
<code class="php">$a = new DateTime('14:25'); $b = new DateTime('17:30'); $interval1 = $a->diff($b); echo "interval 1 : " . $interval1->format("%H:%I"); echo "<br />"; $c = new DateTime('08:00'); $d = new DateTime('13:00'); $interval2 = $c->diff($d); echo "interval 2 : " . $interval2->format("%H:%I"); echo "<br />"; echo "Total interval : " . ($interval1 + $interval2);</code>
問題解答
PHP 沒有運算子重載,因此用物件進行加法運算時,PHP 會先嘗試將其轉換為字串,但DateInterval 不支援此運算。
為了解決這個問題,我們需要使用另一種方法:
程式碼範例
以下是使用上述方法的程式碼範例:
<code class="php">$a = new DateTime('14:25'); $b = new DateTime('17:30'); $interval1 = $a->diff($b); echo "interval 1: " . $interval1->format("%H:%I") . "\n"; $c = new DateTime('08:00'); $d = new DateTime('13:00'); $interval2 = $c->diff($d); echo "interval 2: " . $interval2->format("%H:%I") . "\n"; $e = new DateTime('00:00'); $f = clone $e; $e->add($interval1); $e->add($interval2); echo "Total interval : " . $f->diff($e)->format("%H:%I") . "\n";</code>
輸出:
interval 1: 03:05 interval 2: 05:00 Total interval : 08:05
輸出:
輸出:
輸出:輸出:替代方法(自訂DateInterval)如果你想深入了解,也可以考慮建立自己的DateInterval 擴充,並重新定義加法運算。這是一個更進階的方法,需要對 PHP 擴充開發有深入的了解。以上是如何在 PHP 中新增兩個日期間隔來尋找總持續時間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!