IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Addition d'heures sans réinitialisation


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 128
    Points : 44
    Points
    44
    Par défaut Addition d'heures sans réinitialisation
    Bonjour, dans le cadre d'un projet je dois afficher le cumul des heures effectuées par des enseignements sur une certaine période. Après avoir effectué ma requête je récupère toutes les cours du jour-même par exemple.

    Pour un prof j'obtiens 6H dans la journée, seulement cette valeur va s'arrêter à 23H59 et reprendre à 00H00 et moi je ne veux pas ça.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // Je récupère le temps pour 1 cours qui dure 6H dans une boucle qui parcoure la liste de résultats de la requête
    $temps=DateTime::createFromFormat('H:i','00:00');
    $temps->setTime($ligne["heureSeance"]/100,$ligne["heureSeance"]%100);
     
    // J'ajoute ce temps de cours après l'avoir transformé en interval à mon cumul total
    $comp=DateTime::createFromFormat('H:i','00:00'); 
    $interval=$comp->diff($temps); // création de l'intervalle 
    $vol_total->add($interval); // cumul
     
    // J'ajoute un nouveau temps de 22H à mon résultat précédent qui était de 6H
    $tempo=new DateInterval('PT22H'); // création de l"intervalle de 22H
    $vol_total->add($tempo); // j'ajoute mes 22H aux 6H précédentes
    Et là c'est le drame ! Au lieu de trouver mes 22+6=28H je me retrouve à 4H..

    Quelqu'un pour me dire comment passer au dessus de la limite des 23H59 ?


    Merci

  2. #2
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Salut,

    Dans ce cas tu dois utiliser les opérateurs d'addition/soustraction ordinaire.

  3. #3
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 128
    Points : 44
    Points
    44
    Par défaut
    Ok je vais tenter de passer sans les méthode de type Date() vu qu'apriori c'est cela qui pose problème, d'ailleurs si tu connais un code simple et rapide pour additionner les heures & minutes ça m'aiderai bien, de mon côté j'ai trouvé ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?php
    function AddTime($time1,$time2) {
                list( $hr1, $min1, $sec1 ) = split( ":", $time1);
                $UTime1 = mktime(1,$min1,$sec1,01,01,1970);
                list( $hr2, $min2, $sec2 ) = split( ":", $time2);
                $UTime2 = mktime(1,$min2,$sec2,01,01,1970);
                $UTimeTotal = $UTime1 + $UTime2;
                $UTimeTotal = $UTimeTotal - 3600;
                $timeTotal = date ("H:i:s",$UTimeTotal);
                list( $hr3, $min3, $sec3 ) = split( ":", $timeTotal);
                $hrTotal = $hr1 + $hr2;
                if ($hr3 >= 1)
                    $hrTotal = $hrTotal + $hr3;
                $timeTotal = $hrTotal.":".$min3.":".$sec3;
                return $timeTotal;
            }
     
    //Utilisation
    echo AddTime("12:04:12","02:11:49");
    ?>
    Mais la fonction split() ne semble plus acceptée dans la nouvelle version de wamp...

    Merci

  4. #4
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Citation Envoyé par __sPiKe__ Voir le message
    Mais la fonction split() ne semble plus acceptée dans la nouvelle version de wamp...
    la fonction split est dépréciée tu peux utiliser la fonction explode à la place.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //split( ":", $time1 );
    explode( ":", $time1 );

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Alert sans réinitialiser les champs
    Par kahya dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/03/2007, 11h50
  2. Addition d'heures
    Par zurich dans le forum Langage
    Réponses: 8
    Dernier message: 21/12/2006, 20h14
  3. faire l'addition des heures
    Par zidenne dans le forum Delphi
    Réponses: 1
    Dernier message: 25/08/2006, 14h18
  4. comment avoir l'heure sans la date
    Par malikoo dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 29/06/2006, 14h53
  5. Addition d'heures
    Par jemflight dans le forum Langage
    Réponses: 6
    Dernier message: 26/12/2005, 18h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo