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.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  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 : 47
    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