Comparer deux heures de jours différents ?

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • Comparer deux heures de jours différents ?

    Bonjour,

    Comment comparer deux heures pour connaître la différence, en excluant le nombre de jours qui les sépare ?

    En utilisant strtotime, si je déclenche un événement à l'heure h1 du J1, et que je calcule le nombre d'heures entre cette heure et h2 de J2, si je ne me trompe, je dois obtenir un résultat pouvant dépasser 24 heures. Or je ne souhaite connaître que la différence d'heure comme si nous étions le même jour.
    Comment faire ?

    Merci de vos conseils !
    Robert
    "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
    MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

  • #2
    Tu divises ton nombre d'heures par 24 et le reste de la division (division entière ou modulus en php) te donne le résultat.
    Voir https://www.php.net/manual/fr/langua...arithmetic.php
    Lorsque l'on se cogne la tête contre un pot et que cela sonne creux, ça n'est pas forcément le pot qui est vide.
    Confucius

    Commentaire


    • #3
      Je suis allé un peu vite : il faut d'abord convertir ton nombre en minutes puis faire la division entière par 1440 (24x60) et convertir le reste de la division en heures et minutes
      Lorsque l'on se cogne la tête contre un pot et que cela sonne creux, ça n'est pas forcément le pot qui est vide.
      Confucius

      Commentaire


      • #4
        Merci de tes réponses. J'y avais pensé, mais je me demandais s'il n'y avait pas une méthode plus simple.
        Avec strtotime, je récupère une valeur de ce type : 1562757031 qui est en secondes, donc la différence entre les deux heures sera à diviser par 86400 (24*60*60) pour en récupérer le reste et le convertir en heures et minutes.
        "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
        MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

        Commentaire


        • #5
          Effectivement si tu as l'écart en secondes ta méthode est la bonne.
          Lorsque l'on se cogne la tête contre un pot et que cela sonne creux, ça n'est pas forcément le pot qui est vide.
          Confucius

          Commentaire


          • #6
            Salut

            J'arrive surement apres la bataille, mais as tu regardé du coté de la programmation objet de DateTime




            ++
            Wis
            Dernière édition par lesoutier à 15/07/2019, 09h49

            Commentaire


            • #7
              Bonjour,

              Oui, j'ai regardé, mais pas trouvé un moyen simple de n'obtenir que la différence en heures (à moins que je n'aie pas compris le fonctionnement de datediff), évitant de passer par la division pour obtenir le reste.
              "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
              MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

              Commentaire


              • #8
                Le format de sortie, tu n'affiches que les heures.
                Ce n'est pas ce que tu veux?
                Code PHP:
                $datetime1 = new DateTime();
                $datetime2 = new DateTime('2009-10-13');
                $interval $datetime1->diff($datetime2);
                print_r($datetime1);
                print_r("<br />");
                print_r($datetime2);
                print_r("<br />");
                echo 
                $interval->format('%H heures'); 
                10 heures
                la reponse sera fonction de l'heure a laquelle tu fais le test
                Ce n'est qu'une piste.
                Dernière édition par Wismer à 15/07/2019, 11h55

                Commentaire


                • #9
                  Merci à toi !
                  C'est donc bien que je n'avais pas compris le comportement de datetime.diff, persuadé que ça pouvait (comme strtotime que j'utilise, dépasser 24 heures).
                  Et en fait, dans mon essai, j'ai seulement une heure définie par l'utilisateur (en heure et minutes) que je dois comparer avec l'heure actuelle pour déclencher un événement si je suis dans une plage horaire correspondant à l'heure définie jusqu'à une heure de plus.
                  Je vais voir si ça simplifie mon code, car j'ai été confronté au problème de l'heure actuelle qui m'était renvoyée en UTC et m'a obligé à utiliser les fonctions de Joomla! au lieu des fonctions PHP pour tenir compte du décalage possible
                  .
                  Code PHP:
                          $actualtime JFactory::getDate('now''UTC');
                          
                  $actualtime->setTimezone(JFactory::getUser()->getTimezone());
                          
                  $timediff strtotime($actualtime) - $timetwork ;
                  //et si > 24 h : $timediff = $timediff % $timeout ; 
                  "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                  MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                  Commentaire

                  Annonce

                  Réduire
                  Aucune annonce pour le moment.

                  Partenaire de l'association

                  Réduire

                  Hébergeur Web PlanetHoster
                  Travaille ...
                  X