Maison  >  Article  >  développement back-end  >  Comment ajouter deux intervalles de dates en PHP pour connaître la durée totale ?

Comment ajouter deux intervalles de dates en PHP pour connaître la durée totale ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-04 00:38:30559parcourir

How to Add Two Date Intervals in PHP to Find Total Time Duration?

Comment ajouter deux plages de dates en PHP

L'ajout de deux plages de dates pour calculer la durée totale des heures et des minutes est un problème pour de nombreuses questions pour les programmeurs PHP. Essayons de comprendre comment procéder.

Description du problème

L'utilisateur souhaite ajouter deux intervalles de date de la manière suivante pour obtenir la durée totale au format heure et minute :

<code class="php">$a = new DateTime('14:25');
$b = new DateTime('17:30');
$interval1 = $a->diff($b);
echo "interval 1 : " . $interval1->format("%H:%I");
echo "<br />";

$c = new DateTime('08:00');
$d = new DateTime('13:00');
$interval2 = $c->diff($d);
echo "interval 2 : " . $interval2->format("%H:%I");
echo "<br />";

echo "Total interval : " . ($interval1 + $interval2);</code>

Réponses aux questions

PHP n'a pas de surcharge d'opérateurs, donc lors de l'ajout d'objets avec des objets, PHP essaiera d'abord de les convertir en chaînes, mais DateInterval ne prend pas en charge cette opération.

Pour résoudre ce problème, nous devons utiliser une autre méthode :

  1. Créer un nouvel objet DateTime : Créer un nouvel objet DateTime à utiliser comme point de référence .
  2. Utilisez la fonction add pour ajouter un intervalle : Utilisez la fonction add pour ajouter deux intervalles à un nouvel objet DateTime.
  3. Afficher la différence par rapport au point de référence : Enfin, affichez la différence entre le nouvel objet DateTime et le point de référence pour obtenir la durée totale.

Exemple de code

Voici un exemple de code utilisant la méthode ci-dessus :

<code class="php">$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 = new DateTime('00:00');
$f = clone $e;
$e->add($interval1);
$e->add($interval2);
echo "Total interval : " . $f->diff($e)->format("%H:%I") . "\n";</code>

Sortie :

interval 1: 03:05
interval 2: 05:00
Total interval : 08:05

Approche alternative (DateInterval personnalisé)

Si vous souhaitez aller plus loin, vous pouvez également envisager de créer votre propre extension DateInterval et de redéfinir l'opération d'ajout. Il s'agit d'une approche plus avancée qui nécessite une compréhension approfondie du développement d'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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn