PHP unterstützt keine Operatorüberladung. Bei Verwendung des Additionsoperators ( ) werden Objekte zunächst in Strings umgewandelt. DateInterval unterstützt jedoch keine String-Konvertierung.
<code class="php">interval 1: 03:05 interval 2: 05:00 Total interval : 08:05</code>
Erstellen Sie stattdessen ein neues DateTime-Objekt, verwenden Sie die Funktion add(), um die Intervalle hinzuzufügen und berechnen Sie die Differenz zum Referenzpunkt:
<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>
Unter Berücksichtigung der internen Speicherstruktur von DateInterval ist es auch möglich, diese zu erweitern und die Berechnung manuell durchzuführen möglich:
<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>
Hinweis:DateInterval-Erweiterungen sind mit PHP-Erweiterungen möglich.
Das obige ist der detaillierte Inhalt vonWie füge ich in PHP zwei Datumsintervalle hinzu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!