Précédent   Forum du club des développeurs et IT Pro > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 03/12/2012, 17h08   #1
maxdata
Invité de passage
 
Homme Akim AMx
Inscription : janvier 2010
Messages : 18
Détails du profil
Informations personnelles :
Nom : Homme Akim AMx

Informations forums :
Inscription : janvier 2010
Messages : 18
Points : 1
Points : 1
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
maxdata est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2012, 12h14   #2
gototog
Membre expérimenté
 
Homme Renaud B
Inscription : septembre 2009
Messages : 370
Détails du profil
Informations personnelles :
Nom : Homme Renaud B
Âge : 23
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2009
Messages : 370
Points : 504
Points : 504
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
gototog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2012, 20h53   #3
maxdata
Invité de passage
 
Homme Akim AMx
Inscription : janvier 2010
Messages : 18
Détails du profil
Informations personnelles :
Nom : Homme Akim AMx

Informations forums :
Inscription : janvier 2010
Messages : 18
Points : 1
Points : 1
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
maxdata est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2012, 23h19   #4
rawsrc
Modérateur
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 2 602
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 36
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 2 602
Points : 6 147
Points : 6 147
Envoyer un message via Skype™ à rawsrc
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...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2012, 13h01   #5
maxdata
Invité de passage
 
Homme Akim AMx
Inscription : janvier 2010
Messages : 18
Détails du profil
Informations personnelles :
Nom : Homme Akim AMx

Informations forums :
Inscription : janvier 2010
Messages : 18
Points : 1
Points : 1
Merci rawsrc, c'est exactement ça, ca marche nickel ... tu me sauve la la life ...
maxdata est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 06h20.


 
 
 
 
Partenaires

Hébergement Web