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

Susan Sarandon
Libérer: 2024-11-04 00:38:30
original
557 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

Sortie :

interval 1: 03:05
interval 2: 05:00
Total interval : 08:05
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!