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 :

[Dates] Addition d'heures


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 96
    Points : 63
    Points
    63
    Par défaut [Dates] Addition d'heures
    Salut !

    Ce n'est pas vraiment un problème en rapport avec Mysql mais je n'ai pas trouvé plus approprié.

    Donc mon objectif est, pour une saisie de planning, de calculer une heure de fin à partir d'une heure de début et d'un nombre d'heure.

    Je me suis débrouillé avec ça :

    $HeureFin = date("H:i", mktime($HeureDebut,00,0,0,0,0,0))+date("H:i", mktime($NombreHeure,00,0,0,0,0,0));
    $HeureFin = date("H", mktime ($HeureFin,00));

    Malheureusement cette technique ne marche pas si je veux par exemple calculer :
    8.5 ( heure de début) + 6 ( nombre d'heure) = 14.5 ( heure finale)

    J'obtiens 14 en résultat, j'aimerais donc savoir comment ajouter des heures pas forcément entière.

    Merci de votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Salut

    Tu as quoi dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    date("H:i", mktime($HeureDebut,00,0,0,0,0,0))
    quand $HeureDebut = 8,5 ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    A quoi sert la deuxième ligne, supprime la pour voir

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    A quel moment est effectué ce calcul ? Parce que ça pourrait très bien être fait par MySQL (fonction ADDTIME / DATE_ADD) au moment de l'insertion ou de la mise à jour. C'est ce qu'il y a, je pense, de plus simple malgré qu'il y ait potentiellement un peu de travail pour créer la requête.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 96
    Points : 63
    Points
    63
    Par défaut
    A Eric : La 2ème ligne me sert à mettre le résultat de l'addition sous forme d'heure, grâce à ça 24h devient 00h et 25h devient 1h.

    A julp : Le calcul est effectué sur la première des 2 lignes, la seconde ne sert qu'à mettre au format date.

    Je vais regarder côté fonction MySQL mais il doit y avoir un moyen de faire ça en php.

    En gros il faut pouvoir additionner des heures entre 0 et 24 de type flottant.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Tu m'as pas répondu, car j'ai pas de quoi tester, que vaux $HeureFin après la 1ère ligne pour 8,5 + 6

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 96
    Points : 63
    Points
    63
    Par défaut
    Ok donc un exemple d'éxécution avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	echo $HeureDebut.'<br>';
    	echo $NombreHeure.'<br>';	
    	$HeureFin = date("H:i", mktime($HeureDebut,00,0,0,0,0,0))+date("H:i", mktime($NombreHeure,00,0,0,0,0,0));
    	echo $HeureFin.'<br>';
    	$HeureFin = date("H", mktime ($HeureFin,00));
    	echo $HeureFin.'<br>';
    Sortie :
    23.5 (Heure de Début)
    7 (Nombre d'heure)
    30 (1ere Heure de Fin)
    06 (Heure de fin finale)

    Alors que l'heure finale devrait être 6.5 donc...

    Pour 8.5+6 les 2 heures de fins sont égales à 14, la 2ème ligne est dans ce cas là inutile.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Je dirais comme ca, transforme la partie décimale de ton heure en minutes (0,5 * 60 = 30), et met ces minutes dans ton mktime.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    J'ai pas trouvé de fonctions pour prendre la partie décimal, juste floor pour prendre la partie entière, ca devrait suffire

    Essaye un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $MinuteDebut = ($HeureDebut - floor ($HeureDebut)) * 60; 
    $HeureFin = date("H:i", mktime($HeureDebut,MinuteDebut,0,0,0,0,0))+date("H:i", mktime($NombreHeure,00,0,0,0,0,0));
    $HeureFin = date("H", mktime ($HeureFin,00));
    J'ai pas testé

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 96
    Points : 63
    Points
    63
    Par défaut
    Merci beaucoup,

    En extrayant d'abord les minutes de HeureDebut et NombreHeure, puis en faisant l'addition avec HeureFinale j'ai l'impression que ca marche correctement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $MinuteDebut = ($HeureDebut - floor ($HeureDebut)) * 60; 
    $MinuteNBH = ($NombreHeure - floor ($NombreHeure)) * 60; 
    $HeureFin = date("H:i", mktime($HeureDebut,00,0,0,0,0,0))+date("H:i", mktime($NombreHeure,00,0,0,0,0,0));
    $HeureFin = date("H.i", mktime($HeureFin,$MinuteDebut+$MinuteNBH));
    Je m'en vais tester ça dans tout les sens, si c'est ok je mettrais en résolu, merci Eric !

    EDIT : Nickel

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 96
    Points : 63
    Points
    63
    Par défaut
    Et hop j'up le topic...

    Malheureusement pour moi cette méthode de calcul d'heure qui marche parfaitement en local ne fonctionne plus en ligne j'ai toujours comme résultat 00.00.

    En d'autre terme, pourquoi cette ligne retourne toujours 0 sur Internet et retourne la bonne valeur en local avec $HD et $NBH ok :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $HeureFin = date("H:i", mktime($HD,00,0,0,0,0,0))+date("H:i",mktime($NBH,00,0,0,0,0,0));
    Une idée ?

Discussions similaires

  1. [Date] enregistrer la date et l'heure
    Par Nanoua dans le forum JDBC
    Réponses: 19
    Dernier message: 25/05/2012, 04h33
  2. Recuperer la date sans l'heur dans un champ datetime
    Par bob33 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 22/06/2010, 13h59
  3. Réponses: 12
    Dernier message: 18/03/2007, 16h26
  4. [FLASH MX 2004] Récupérer la date et l'heure ....
    Par Invité1 dans le forum Flash
    Réponses: 2
    Dernier message: 06/07/2005, 12h41
  5. Bloque la date et l'heure sous Win XP ??
    Par Djedjeridoo dans le forum Windows
    Réponses: 2
    Dernier message: 05/04/2004, 13h11

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