Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Candidat au titre de Membre du Club
    Homme Profil pro Akim AMx
    Inscrit en
    janvier 2010
    Messages
    56
    Détails du profil
    Informations personnelles :
    Nom : Homme Akim AMx

    Informations forums :
    Inscription : janvier 2010
    Messages : 56
    Points : 10
    Points
    10

    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 Expert
    Homme Profil pro Renaud B
    Inscrit en
    septembre 2009
    Messages
    763
    Détails du profil
    Informations personnelles :
    Nom : Homme Renaud B
    Âge : 24
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : septembre 2009
    Messages : 763
    Points : 1 009
    Points
    1 009

    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 :
    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
    Candidat au titre de Membre du Club
    Homme Profil pro Akim AMx
    Inscrit en
    janvier 2010
    Messages
    56
    Détails du profil
    Informations personnelles :
    Nom : Homme Akim AMx

    Informations forums :
    Inscription : janvier 2010
    Messages : 56
    Points : 10
    Points
    10

    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
    Modérateur
    Avatar de rawsrc
    Homme Profil pro Martin
    Dev indep
    Inscrit en
    mars 2004
    Messages
    3 582
    Détails du profil
    Informations personnelles :
    Nom : Homme Martin
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 3 582
    Points : 8 293
    Points
    8 293

    Par défaut

    Bonsoir,

    Je ferais quelques chose dans ce genre :
    Code :
    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
     
    ?>
    # Dans la Création, tout est permis mais tout n'est pas utile...

  5. #5
    Candidat au titre de Membre du Club
    Homme Profil pro Akim AMx
    Inscrit en
    janvier 2010
    Messages
    56
    Détails du profil
    Informations personnelles :
    Nom : Homme Akim AMx

    Informations forums :
    Inscription : janvier 2010
    Messages : 56
    Points : 10
    Points
    10

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •