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 :

Calculer le temps écoulé entre 2 dates


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 69
    Points : 46
    Points
    46
    Par défaut Calculer le temps écoulé entre 2 dates
    Bonjour,

    Je rencontre un souci avec le calcul de temps entre 2 dates :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    $datetimeCreation = new DateTime('2018-03-08 14:33:30');
    $datetimeTraitement = new DateTime('2018-03-08 14:35:38');
    $tempsPrisEnCharge = $datetimeTraitement->diff($datetimeCreation);
     
    $heuPrisEnCharge = ($tempsPrisEnCharge->h <= 9)? '0'.$tempsPrisEnCharge->h : $tempsPrisEnCharge->h;
    $minPrisEnCharge = ($tempsPrisEnCharge->i <= 9)? '0'.$tempsPrisEnCharge->i : $tempsPrisEnCharge->i;
    $secPrisEnCharge = ($tempsPrisEnCharge->s <= 9)? '0'.$tempsPrisEnCharge->s : $tempsPrisEnCharge->s;
     
    $data[$i]->delai_prise_en_charge = $heuPrisEnCharge.':'.$minPrisEnCharge.':'.$secPrisEnCharge;
     
    // Devrais retourner : 00:02:08 soit 0 heure 2 minutes et 8 secondes
    Ca me retounre un délai : 01:13:51 soit 1h 13 minutes et 51 secondes
    Je précise que les dates proviennent d'une base de données MySql (champ de type DateTime)

    Est-ce que quelqu'un sait pourquoi ? Merci

  2. #2
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Hello,

    ton code fonctionne parfaitement chez moi (avec un echo) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $datetimeCreation = new DateTime('2018-03-08 14:33:30');
    $datetimeTraitement = new DateTime('2018-03-08 14:35:38');
    $tempsPrisEnCharge = $datetimeTraitement->diff($datetimeCreation);
     
    $heuPrisEnCharge = ($tempsPrisEnCharge->h <= 9)? '0'.$tempsPrisEnCharge->h : $tempsPrisEnCharge->h;
    $minPrisEnCharge = ($tempsPrisEnCharge->i <= 9)? '0'.$tempsPrisEnCharge->i : $tempsPrisEnCharge->i;
    $secPrisEnCharge = ($tempsPrisEnCharge->s <= 9)? '0'.$tempsPrisEnCharge->s : $tempsPrisEnCharge->s;
     
    echo $heuPrisEnCharge.':'.$minPrisEnCharge.':'.$secPrisEnCharge;

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 69
    Points : 46
    Points
    46
    Par défaut
    Oui effectivement.
    Je suis désolé mais je me suis trompé de date pour la date de traitement, je prenais en compte la date de fin de traitement de dossier.
    Voila pourquoi cet écart...
    Le code pourra néanmoins servir à d'autres.

    Merci à vous Bonne journée

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Au passage : tu utilises DateTime ->diff (bien ), qui retourne un DateInterval, qui possède une fonction format. Autant s'en servir, ça te facilitera l'affichage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $datetimeCreation = new DateTime('2018-03-08 14:33:30');
    $datetimeTraitement = new DateTime('2018-03-08 14:35:38');
    $tempsPrisEnCharge = $datetimeTraitement->diff($datetimeCreation);
     
    $data[$i]->delai_prise_en_charge = $tempsPrisEnCharge->format('%H:%I:%S');
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

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

Discussions similaires

  1. Calcul Temps écoulé entre 2 dates
    Par gweddy dans le forum iReport
    Réponses: 4
    Dernier message: 18/12/2017, 16h14
  2. Calculer le temps écoulé entre deux dates
    Par ramoucha23 dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 25/08/2016, 17h48
  3. [XL-2007] Calculer le temps écoulé entre 2 dates
    Par marie-dominique dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/01/2012, 17h37
  4. calculer la temps moyen entre deux dates
    Par zainabsourid dans le forum BIRT
    Réponses: 1
    Dernier message: 24/07/2006, 12h06
  5. Temps écoulé entre 2 dates
    Par casafa dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 23/12/2005, 03h04

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