首頁  >  文章  >  後端開發  >  如何在 PHP 中新增兩個日期間隔?

如何在 PHP 中新增兩個日期間隔?

Patricia Arquette
Patricia Arquette原創
2024-11-03 06:02:30968瀏覽

How to Add Two Date Intervals in PHP?

如何在 PHP 中加入兩個日期間隔

PHP 不支援運算子重載。使用加法運算子 ( ) 時,物件會先轉換為字串。但是,DateInterval 不支援字串轉換。

<code class="php">interval 1: 03:05
interval 2: 05:00
Total interval : 08:05</code>

而是建立一個新的DateTime 對象,使用add() 函數添加間隔,併計算與參考點的差值:

<code class="php">$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>

替代方法

考慮到DateInterval的內部儲存結構,擴展它並手動執行計算也是可以的:

<code class="php">class MyDateInterval extends DateInterval
{
    public static function fromDateInterval(DateInterval $from)
    {
        return new MyDateInterval($from->format('P%yY%dDT%hH%iM%sS'));
    }
                                  
    public function add(DateInterval $interval)
    {
        foreach (str_split('ymdhis') as $prop)
        {
            $this->$prop += $interval->$prop;
        }
    }
}

$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 = MyDateInterval::fromDateInterval($interval1);
$e->add($interval2);
echo "Total interval: " . $e->format("%H:%I") . "\n";</code>

注意: PHP 擴充功能可以實現DateInterval 擴充。

以上是如何在 PHP 中新增兩個日期間隔?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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