PHP et intervalles d'heures

Développement, conception de sites web, PHP, (X)HTML, ASP, Ajax, CSS, Javascript, Flash, MySQL, et autres ont leurs entrées dans cette section. On peut aussi parler d'hébergement, de maintenance, de sécurité...

Modérateur: Modérateurs

PHP et intervalles d'heures

Messagepar Tosem » 27 Mar 2009 14:35

Bonjour bonjour,


Y-a-t'il mon sauveur parmi vous ? :mrgreen:


Voilà mon prob où je bute depuis un moment ...


J'ai 2 intervalles d'heures par ex.
1° de 22:10 à 03:00
2° de 23:00 à 05:30


J'aimerais comparer ma 1ère intervalle à la 2ème et en ressortir le nombre d'heures qui sont comprises dans ma 2ème intervalle.

Dans mon ex. j'aurais 4h. de ma 1ère intervalle qui sont comprises dans la 2ème intervalle.


Suis-je clair ? :roll:


Existe-t-il une fonction qui fait cela ou autrement comment calculer cela ?


Merci beaucoup d'avance ! :supers:
"Si ce que tu as à dire est moins beau que le silence, alors tais-toi !"
Avatar de l’utilisateur
Tosem
Libellulien Junior
Libellulien Junior
 
Messages: 424
Inscription: 29 Sep 2006 12:57
Localisation: Gruyère Land

Re: PHP et intervalles d'heures

Messagepar Falkra » 27 Mar 2009 22:49

Bonsoir,

il faudra transformer tes heures en secondes ou autres valeurs, ou bricoler avec la fonction date pour pouvoir les comparer :
http://fr.php.net/manual/fr/function.date.php

Le but est d'obtenir à partir de ta notation standard un chiffre, pour faire des calculs avec.
Avatar de l’utilisateur
Falkra
Admin libellules.ch
Admin libellules.ch
 
Messages: 25882
Inscription: 30 Jan 2005 13:44
Localisation: 127.0.0.1

Re: PHP et intervalles d'heures

Messagepar Tosem » 28 Mar 2009 11:01

Merci Falkra !

En effet j'ai commencé à transformer toutes mes dates/heures en timestamp (nbre de sec. écoulées depuis le 1er janvier 1970, début de l'ère UNIX)

Avec ça je vais pouvoir tester toutes mes heures et trouver les intervalles.


Merci pour la piste ! :supers:


:merci


Y'a plus qu'à programmer tout ça ! :|
"Si ce que tu as à dire est moins beau que le silence, alors tais-toi !"
Avatar de l’utilisateur
Tosem
Libellulien Junior
Libellulien Junior
 
Messages: 424
Inscription: 29 Sep 2006 12:57
Localisation: Gruyère Land

Re: PHP et intervalles d'heures

Messagepar Falkra » 28 Mar 2009 14:18

Ok, impec. :supers:

N'hésite pas, en cas de besoin. :wink:
Avatar de l’utilisateur
Falkra
Admin libellules.ch
Admin libellules.ch
 
Messages: 25882
Inscription: 30 Jan 2005 13:44
Localisation: 127.0.0.1

Re: PHP et intervalles d'heures

Messagepar nas » 15 Avr 2009 16:18

une petite fonction

Code: Tout sélectionner
function date_diff($datedebut,$datefin,$affiche_texte=0) {
      // PAR HERVE SIGAP (DOUALA CAMEROUN)
   // DICTIONNAIRE DES VARIABLES UTILISEES
   // ______________________________________________________________________________________________
   //| VARIABLE | DEFINITION |
   // ______________________________________________________________________________________________
   //|    $datedebut        |    Date de début fournie en variable à la fonction        |
   //|    $datefin        |    Date de fin de fournie en variable à la fonction    |
   //|    $dd            |    Date de début interne à la fonction            |
   //|    $df            |    Date de fin     interne à la fonction            |
   //|    $td            |    Heure de début interne à fonction            |
   //|    $tf            |    Heure de fin interne à fonction                |
   //|    $jd            |    Jour début                        |
   //|    $md            |    Mois début                        |
   //|    $ad            |    Année début                        |
   //|    $pd            |    Position Départ                     |
   //|    $jf            |    Jour Fin                     |
   //|    $mf            |    Mois Fin                        |
   //|    $af            |    Année Fin                        |
   //|    $pf            |    Position Fin                        |
   //|    $hd            |    Heure début                        |
   //|    $mid            |    Minute début                        |
   //|    $sd            |    Seconde début                        |
   //|    $tsd            |    Timestamp Début                        |
   //|    $hf            |    Heure Fin                        |
   //|    $mif            |    Minute Fin                        |
   //|    $sf            |    Second Fin                        |
   //|    $tsf            |    Timestamp Fin                        |
   //|    $ts            |    Différence Timestamp début et Timestamp fin        |
   //|    $nbj            |    Nombre de jours                        |
   //|    $nbh            |    Nombre d'heures                        |
   //|    $nbm            |    Nombre de minutes                    |
   //|    $nbs            |    Nombre de secondes                    |
   //|    $texte            |    Texte affiché en sortie de fonction            |
   //_______________________________________________________________________________________________

   if ($datedebut=='') {
      $texte="impossible de démarrer la fonction sans la date de début";
   } else {
      if ($datefin!='') {
         list($dd, $td) = explode(' ', $datedebut); // Séparation date et heure début
         list($df,$tf) = explode(' ',$datefin); // Séparation date et heure fin

         // Traitement date de début et Traitement Heure début
         list($jd, $md, $ad) = explode('-', $dd); // Explosion date debut
         $pd = mktime(0,0,0,$md,$jd,$ad); // structuration date debut
         list($hd,$mid,$sd) = explode(':',$td); // Explosion heure début


         // Traitement date de fin et Traitement Heure fin
         list($jf,$mf,$af) = explode('-',$df); // Explosion date fin
         $pf = mktime(0,0,0,$mf,$jf,$af); // structuration date fin
         list($hf, $mif, $sf) = explode(":", $tf); // Explosion heure fin

         //Structurations heures minutes et secondes
         $tsd = mktime ($hd, $mid, $sd, 1, 1, 1970); // structuration heure debut
         $tsf = mktime ($hf, $mif, $sf, 1, 1, 1970); // structuration heure fin
         $ts = abs($tsf - $tsd);
         $tsec = $ts; //on conserve cette mesure
         

         // Extraction des valeurs attendues du Timestamp $ts
         $nbj=abs($pf - $pd)/86400; // Nombre de jours écoulés
         $nbh = floor($ts/3600); // Nombre d'heures écoulées
         $ts = $ts - ($nbh*3600); // Soustrations du nombre de secondes définissables comme heure du total de secondes existant
         $nbm = $ts/60; //Division de ce nombre de secondes par 60 pour en extraire celles définissables comme minute= Nombre de minutes écoulées
         $nbm=floor($nbm); // Extraction Partie entière de la valeur nombre de minutes
         $nbs=$ts-($nbm*60); //Soustrations du nombre de secondes définissables comme minutes du total de secondes restant : Le reste = nombre de secondes
/*
         echo '<br />';echo'pf='.$pf;echo '<br />';
         echo 'pd='.$pd;echo '<br />';
         echo 'ts='.$ts;echo '<br />';
         */
         
            $tab_result = array('jours' => $nbj,
            'heures' => $nbh,
            'minutes' => $nbm,
            'secondes' => $nbs,
            'dif_secondes' => floor($tsec)+($nbj*86400),
            'dif_minutes' => floor($tsec/60)+($nbj*1440),
            'dif_heures' => floor($tsec/3600)+($nbj*24)
            );
         
                        
         if ($nbj==0) { // Si nombre jours =0
            if ($nbh==0) { // Si nombre heures =0
               if ($nbm==0) { // Si nombre minutes =0
                  $texte= $nbs." sec"; // Affichage secondes seulement
                  
               }else {
                  $texte= $nbm." min ".$nbs." sec"; // Affichage minutes et secondes
               }
            } else {
               $texte= $nbh." hr ".$nbm." min ".$nbs." sec"; // Affichage heures, minutes et secondes
            }
         } else {
            $texte= $nbj." j ".$nbh." hr ".$nbm." min ".$nbs." sec"; // Affichage jour, heure, minutes et secondes
         }
      } else { // Si date fin vide
         $texte="processus en cours...";
      } // Fin test existence date de fin
      if ($affiche_texte==1){
      return $texte; // Renvoi Texte à afficher
      } else {
      return $tab_result;
      }
   } // Fin test existence date de début
}


:mrgreen: :mrgreen:
nas
 
Messages: 15
Inscription: 10 Avr 2009 14:48


Retourner vers Développement, conception de sites web

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
cron