PHP tidak menyokong lebihan muatan operator. Objek mula-mula ditukar kepada rentetan apabila menggunakan pengendali penambahan ( ). Walau bagaimanapun, DateInterval tidak menyokong penukaran rentetan.
<code class="php">interval 1: 03:05 interval 2: 05:00 Total interval : 08:05</code>
Sebaliknya, cipta objek DateTime baharu, gunakan fungsi add() untuk menambah selang dan hitung perbezaan pada titik rujukan:
<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>
Memandangkan struktur storan dalaman DateInterval, memanjangkannya dan melaksanakan pengiraan secara manual juga boleh dilakukan:
<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>
Nota: Sambungan DateInterval boleh dilakukan dengan sambungan PHP.
Atas ialah kandungan terperinci Bagaimana untuk Menambah Dua Selang Tarikh dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!