Maison > Article > développement back-end > Comment ajouter deux intervalles de dates en PHP ?
PHP ne prend pas en charge la surcharge des opérateurs. Les objets sont d'abord convertis en chaînes lors de l'utilisation de l'opérateur d'addition ( ). Cependant, DateInterval ne prend pas en charge la conversion de chaîne.
<code class="php">interval 1: 03:05 interval 2: 05:00 Total interval : 08:05</code>
Au lieu de cela, créez un nouvel objet DateTime, utilisez la fonction add() pour ajouter les intervalles et calculez la différence par rapport au point de référence :
<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>
Compte tenu de la structure de stockage interne de DateInterval, l'étendre et effectuer le calcul manuellement est également possible :
<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>
Remarque : Les extensions DateInterval sont possibles avec les extensions PHP.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!