首頁  >  文章  >  後端開發  >  如何在 PHP 中新增兩個日期間隔來尋找總持續時間?

如何在 PHP 中新增兩個日期間隔來尋找總持續時間?

Susan Sarandon
Susan Sarandon原創
2024-11-04 00:38:30559瀏覽

How to Add Two Date Intervals in PHP to Find Total Time Duration?

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 不支援此運算。

為了解決這個問題,我們需要使用另一種方​​法:

  1. 建立新的 DateTime 物件:建立一個新的 DateTime 物件作為參考點。
  2. 使用 add 函數新增區間:使用 add 函數將兩個區間相加至新的 DateTime 物件。
  3. 顯示與參考點的差異:最後,顯示新的 DateTime 物件與參考點之間的差異,以取得總時長。

程式碼範例

以下是使用上述方法的程式碼範例:

<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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn