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 :

Différence entre des heures en PHP


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Employé
    Inscrit en
    Octobre 2013
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Employé
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2013
    Messages : 51
    Points : 68
    Points
    68
    Par défaut Différence entre des heures en PHP
    Bonsoir à toutes et tous

    Je suis confronté à un pb que je n'arrive pas à résoudre, même après avoir cherché des heures avec mon meilleur ami google.

    Je dispose de 2 variables

    $A = ("41:30:00")
    $B = ("39:00:00")

    Vous l'aurez compris, ces variables sont la résultante d'une somme d'heures.
    Ce que je voudrais, c'est obtenir la différence entre ces deux variables. (soit ici..2:30:00)

    J'ai bien tenté avec des strtotime, des date, des newdate etc.....mais que couic.

    J'imagine que c'est tout bête, (ou pas ?), d'ou ma venue vers vous.

    Bien cordialement à toutes et tous

    EEY

  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
    Il n'y a pas de fonction native pour compter des heures. strtotime et datetime manipulent des temps, pas des durées.
    Il faut passer par une fonction maison.

  3. #3
    Membre habitué
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Points : 140
    Points
    140
    Par défaut
    Salut eeychenne,

    Je ne suis pas expert.

    Voici ce que je pense, mais il faudrait le développer et l'adapter dans ton cas.

    Désolé...

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    <?php
     
    /*
    * time — Retourne le timestamp UNIX actuel
    *   http://php.net/manual/fr/function.time.php
    *
    *
    */
    echo '<p>1er solution avec "timestamp"</p>';
    // nous sommes 15 Dec 20
     
    $a = "2016-12-15 41:30:00";
    $b = "2016-12-15 39:00:00";
     
    //1 jour = 24 heures donc pas 41
    //donc il faut trouver les heures selon la date
     
    // strtotime    -> http://php.net/manual/fr/function.strtotime.php
    $a = strtotime("2016-12-15 24:30:00");
    $b = strtotime("2016-12-15 23:00:00");
     
    // abs          -> http://php.net/manual/fr/function.abs.php
    // round        -> http://php.net/manual/fr/function.round.php
    echo round(abs($a - $b) / 60,2). " minutes";
     
    // si b = 2016-12-15    ->  tu peux obtenir :   90 minutes
    // si b = 2017-12-15    - > tu peux obtenir :   525510 minute
     
    echo '<p>2e solution  avec "timestamp"</p>';
     
     
    $aa = strtotime("24:30:00");
    $bb = strtotime("23:00:00");
     
    echo round(abs($aa - $bb) / 60,2). " minutes";
     
    // ->  tu peux obtenir :   90 minutes
    // si b = 2017-12-15    - > tu peux obtenir :   525510 minute
     
     
    echo '<p>3e solution  avec "timestamp"</p>';
     
    $aaa = "2016-12-15 20:30:00";
    $bbb = "2016-12-15 22:00:00";
     
     
    $aaa = strtotime($aaa);
    $bbb = strtotime($bbb);
     
     
    $combienM = ($bbb - $aaa) / 60;
    echo $combienM;

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Holà,

    quelque chose de simple dans ce style :
    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
    $as_decimal = function($p)
    {
        list($h, $m, $s) = explode(':', $p);
     
        return ($h + (($m + ($s / 60)) / 60));
    };
     
    $as_short = function($decimal)
    {
        $hours = (int)$decimal;
        $min   = ($decimal - $hours) * 60;
        $sec   = (int)(ceil(($min - (int)$min) * 60));
     
        return sprintf("%02d:%02d:%02d", $hours, $min, $sec);
    };
     
    $a = '41:30:00';
    $b = '39:24:20';
     
    echo $as_short($as_decimal($a) - $as_decimal($b)); // avec ceil() : 02:05:40       sans ceil() : 02:05:39
    Le gros intérêt c'est une fois que la conversion en décimal a été faite, tu peux en faire ce que tu veux en terme de calculs... Alors que le format en base 60 est beaucoup plus problématique à manipuler

Discussions similaires

  1. problème différence entre deux heures
    Par gwenhael dans le forum Langage
    Réponses: 2
    Dernier message: 14/09/2006, 15h16
  2. Réponses: 4
    Dernier message: 07/07/2006, 17h48
  3. Réponses: 7
    Dernier message: 05/07/2006, 16h29
  4. [Dates] Calcul d'une différence entre deux heures
    Par loreleï85 dans le forum Langage
    Réponses: 12
    Dernier message: 28/06/2006, 11h43
  5. Réponses: 3
    Dernier message: 27/01/2006, 12h36

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