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 :

Comment additionner le temps (heure, minute, seconde) ?


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2002
    Messages : 62
    Points : 52
    Points
    52
    Par défaut Comment additionner le temps (heure, minute, seconde) ?
    Bonjour,

    Je développe une application simple de gestion des heures supplémentaires.
    J'ai une table "horaires" qui recense pour chaque personne la date, l'heure supplémentaire, et l'heure récupérée.
    Pour faire simple, j'ai donc 4 champs (en plus de l'id de l'utilisateur) :
    id | date | heure_supp | heure_recup
    2 | 2010-09-01 | 01:00:00 | 00:00:00 (l'utilisateur 2 a eu droit à 1h supp)
    2 | 2010-09-02 | 01:30:00 | 00:00:00 (l'utilisateur 2 a eu droit à 1h30 supp)
    2 | 2010-09-03 | 00:00:00 | 01:00:00 (l'utilisateur 2 a récupéré 1h)
    2 | 2010-09-04 | 00:30:00 | 00:00:00 (l'utilisateur 2 a eu droit à 30min supp)
    2 | 2010-09-10 | 02:30:00 | 00:00:00 (l'utilisateur 2 a eu droit à 2h30 supp)
    J'aimerais connaître le nombre total d'heures supplémentaires et d'heures récupérées pour l'utilisateur 2.
    Pour cela, j'ai pensé à une simple addition des temps au format timestamp, mais je ne retombe pas sur mes pattes.
    Les champs heure_supp et heure_recup sont de type TIME en base, je procède comme suite.
    Pour chaque heure supp récupérée dans la base
    convertir en timestamp [avec la formule date('H:i:s', mktime(Heu, Min, Sec, Mois, Jour, Année))]
    additionner avec le timestamp précédemment stocké au format timestamp
    stocker la nouvelle valeur
    Fin
    Ensuite, je repasse au format H:m:s la valeur finale stockée, avec la formule date('H:i:s', mktime(Heu, Min, Sec, Mois, Jour, Année)).
    Sauf que je n'obtiens pas le résultat attendu.
    Voici un code test qui permet de rajouter une durée de 2h45 à une heure de début. L'heure de fin devrait être 12:45:00
    <?php
    $heure_debut = "10:00:00";
    $hDebut = explode(":", $heure_debut);
    $duree = "02:45:00";
    $duration = explode(":", $duree);

    $heure_fin = date('H:i:s', mktime($hDebut[0], $hDebut[1], $hDebut[2], "05", "22", "2010") + mktime($duration[0], $duration[1], $duration[2], "05", "22", "2010"));
    echo "HEURE DE DEBUT : $heure_debut<br>" .
    "DUREE : $duree<br>" .
    "HEURE DE FIN : $heure_fin<br>";
    ?>
    J'obtiens 02:16:44 au lieu de 12:45:00
    Pourriez-vous m'aider ? Merci.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Timestamp et Date ne sont pas fait pour additionner des heures.

    Tu peux le faire directement dans ta requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SEC_TO_TIME( SUM( TIME_TO_SEC( `heure_supp` ) ) ) AS somme FROM ta_table;

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2002
    Messages : 62
    Points : 52
    Points
    52
    Par défaut
    Excellent! Ca marche!
    Merci sabotage.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 24/08/2015, 16h46
  2. [MySQL] Comment afficher le résultat de ma requête en format heure minutes seconde ?
    Par AmBZH dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 08/06/2012, 09h15
  3. arrondir le temps (heure, minute, seconde) ?
    Par altahir007 dans le forum Langage
    Réponses: 6
    Dernier message: 27/11/2009, 15h39
  4. Réponses: 1
    Dernier message: 30/09/2008, 20h40
  5. Formater une durée sous la forme Heure:Minute:Seconde
    Par marsupile dans le forum C++Builder
    Réponses: 2
    Dernier message: 31/01/2004, 23h29

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