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