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 hébergés chez PHPNET - +sites gérés chez 1and1 et OVH - Site pro : www.robertg-conseil.fr

  • #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 hébergés chez PHPNET - +sites gérés chez 1and1 et OVH - Site pro : www.robertg-conseil.fr

        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
            https://www.php.net/manual/fr/datetime.diff.php
            https://www.php.net/manual/fr/dateinterval.format.php


            ++
            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 hébergés chez PHPNET - +sites gérés chez 1and1 et OVH - Site pro : www.robertg-conseil.fr

              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 hébergés chez PHPNET - +sites gérés chez 1and1 et OVH - Site pro : www.robertg-conseil.fr

                  Commentaire

                  Annonce

                  Réduire
                  1 sur 2 < >

                  C'est [Réglé] et on n'en parle plus ?

                  A quoi ça sert ?
                  La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

                  Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

                  Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
                  Comment ajouter la mention [Réglé] à votre discussion ?
                  1 - Aller sur votre discussion et éditer votre premier message :


                  2 - Cliquer sur la liste déroulante Préfixe.

                  3 - Choisir le préfixe [Réglé].


                  4 - Et voilà… votre discussion est désormais identifiée comme réglée.

                  2 sur 2 < >

                  Assistance au forum - Outil de publication d'infos de votre site

                  Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

                  Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

                  Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

                  UTILISER À VOS PROPRES RISQUES :
                  L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

                  Problèmes connus :
                  FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

                  Installation :

                  1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

                  Archive zip : https://github.com/AFUJ/FPA/zipball/master

                  2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

                  3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

                  4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

                  5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

                  6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
                  et remplacer www. votresite .com par votre nom de domaine


                  Exemples:
                  Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
                  Télécharger le script fpa-fr.php dans: /public_html/
                  Pour executer le script: http://www..com/fpa-fr.php

                  Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
                  Télécharger le script fpa-fr.php dans: /public_html/cms/
                  Pour executer le script: http://www..com/cms/fpa-fr.php

                  En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

                  Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
                  Voir plus
                  Voir moins

                  Partenaire de l'association

                  Réduire

                  Hébergeur Web PlanetHoster
                  Travaille ...
                  X