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 des dates avec fonction Gel de temps


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2010
    Messages : 71
    Points : 32
    Points
    32
    Par défaut Calculer des dates avec fonction Gel de temps
    Bonjour,

    j'ai besoin d'aide, en effet je suis en train de développer un script, et j'ai un compteur de temps qui cours au format "2 M 26 J(s) 7 H 36", j'aimerai faire une pause du temps, puis reprendre quand je veux, et récupéré le temps écoulé depuis le démarrage, en enlevant bien sur le temps de la pause.

    J'ai des dates dans ma base sql de type :
    d/m/y H:i

    j'ai 4 champs, datedebut, dategel, datereprise, datefin
    cela me donne donc 4 dates, et si quelqu’un peut m'aider a savoir comment faire ?

    par exemple si je démarre
    le 25/11/2012 6:20
    pause le 26/11/2012 6:20
    reprise le 27/11/2012 a 6:20
    fin le 28/11/2012 a 7:20

    je voudrais donc récupérer 0 Mois 2Jours et 1h20 par ex

    Merci pour vos lumières et j’espère que j'ai été clair ? car j'ai beau réfléchir, mais je et je ne trouve pas la solution.

    merci
    Max

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    mktime passe tes dates en secondes UNIX. Hésite pas a fouiller dans les fonctions de dates et heures de php.net

    L'algo grosso modo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    temps global = mktime(dateFin)-mktime(dateDebut)
    temps de pause= mktime(dateReprise)-mktime(datePause);
     
    temps total (en seconde) = temps global - temps de pause

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2010
    Messages : 71
    Points : 32
    Points
    32
    Par défaut
    Merci pour ta réponse, j'ai beau tester je ne trouve pas la solution, c'est surtout avec la syntaxe que j'ai du mal

  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
    Bonsoir,

    Je ferais quelques chose dans ce genre :
    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
    <?php
     
    function plain_elapsed_time($time) {
        $hourglass = array(
            24 * 60 * 60 => 'd',
            60 * 60      => 'h',
            60           => 'm',
            1            => 's'
        );
     
        $plain = array();
        foreach($hourglass as $secs => $str) {
            if ($v = (int)($time/$secs)) {
                $time = $time % $secs;
            }
            $plain[] = $v.$str;
        }
     
        return implode(' ', $plain);
    }
     
    $start   = DateTime::createFromFormat('d/m/Y h:i', '25/11/2012 6:20')->getTimestamp();
    $break   = DateTime::createFromFormat('d/m/Y h:i', '26/11/2012 6:20')->getTimestamp();
    $restart = DateTime::createFromFormat('d/m/Y h:i', '27/11/2012 6:20')->getTimestamp();
    $end     = DateTime::createFromFormat('d/m/Y h:i', '28/11/2012 7:20')->getTimestamp();
    $elapsed = plain_elapsed_time($end-$restart+$break-$start); // 2d 1h 0m 0s
     
    ?>

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2010
    Messages : 71
    Points : 32
    Points
    32
    Par défaut
    Merci rawsrc, c'est exactement ça, ca marche nickel ... tu me sauve la la life ...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/12/2014, 17h43
  2. Réponses: 1
    Dernier message: 20/05/2013, 13h46
  3. [XL-2010] Calculer des différences avec regroupement de dates et heures
    Par Tilous dans le forum Excel
    Réponses: 11
    Dernier message: 17/04/2013, 11h07
  4. calculer des valeurs en fonctions de dates
    Par texas2607 dans le forum Excel
    Réponses: 9
    Dernier message: 21/01/2011, 14h01
  5. Obtenir des dates en fonction du n° de la semaine
    Par coeur74 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 10/02/2005, 13h42

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