Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/02/2011, 16h39   #1
Membre à l'essai
 
Inscription : juin 2009
Messages : 129
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 129
Points : 20
Points : 20
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 :
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
__sPiKe__ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 09h06   #2
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
Salut,

Dans ce cas tu dois utiliser les opérateurs d'addition/soustraction ordinaire.
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 13h01   #3
Membre à l'essai
 
Inscription : juin 2009
Messages : 129
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 129
Points : 20
Points : 20
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 :
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
__sPiKe__ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 14h09   #4
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
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 :
1
2
3
 
//split( ":", $time1 );
explode( ":", $time1 );
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h45.


 
 
 
 
Partenaires

Hébergement Web