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 :

[Dates] Question time(), mktime() et date() : une heure de trop !


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut [Dates] Question time(), mktime() et date() : une heure de trop !
    Salut
    Je ne suis pas vraiment spécialiste des dates et timestamps, mais jusque là je m'en sortais bien.

    J'ai fait un script qui permet de savoir combien de temps le visiteur a passé sur telle ou telle page du site.
    Je stock pour ça un mktime() en session et lorsque j'arrive sur une autre page, cela calcul la différence avec le mktime() actuel.

    Cependant, quand j'affiche cette différence avec date('H:i:s', $time); j'ai 1 heure en plus...

    Voici un exemple ultra simplifié, mais le problème réside là.
    Fichier 1 (test.php) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    session_start();
    $time = mktime() - $_SESSION['time'];
    echo date('H:i:s', $time).'<br>'; 
    $_SESSION['time'] = mktime();
     
    ?>
    <a href="test2.php">Lien vers page</a>
    Fichier 2 (test2.php) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    session_start();
     
    $time = mktime() - $_SESSION['time'];
    echo date('H:i:s', $time).'<br>'; // affiche 1:00:03, si on a passé 3 secondes sur la page....
    $_SESSION['time'] = mktime();
    ?>
     
    <a href="test.php">Autre lien vers page</a>
    D'où vient cette heure supp' ?
    Merci !

  2. #2
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    Peut etre le probleme d'heure dété heure d'hiver. Si tu es en php4 c'est une valeur à ajouter à ton mktime si c'est php5, utilise ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    date_default_timezone_set('Europe/Paris');

  3. #3
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut
    Salut,
    Merci j'ai déjà essayé ça mais sans résultat...

    Je ne comprends pas...

    D'autres solutions / explications?

    Je tourne sous Wamp en local.

  4. #4
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    affiche ton $_SESSION['time'] et compare les, on ne sait jamais si il a été modifié entre temps...

  5. #5
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut
    Non, il n'y a pas de possibilité qu'il soit modifié entre temps...
    Même si je suis sous Windoz

    Quoi qu'il en soit, même en faisant le test, je n'ai pas de décalage...

    Je ne comprends pas pourquoi il y a cette heure de plus !

  6. #6
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut
    C'est bon, j'ai trouvé !
    En fait si on utilise la fonction fuseau horaire, il faut utiliser les fonctions gmmktime() pour créer le timestamp et gmdate() pour afficher la date.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    session_start();
    date_default_timezone_set('Europe/Paris');
    $time = gmmktime() - $_SESSION['time'];
    echo gmdate('H:i:s', $time).'<br>';
    $_SESSION['time'] = gmmktime();
    ?>
    C'est logique !
    Merci pour l'aide

  7. #7
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    si tu ldit

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

Discussions similaires

  1. soustraction timestamp avec une heure en trop ?
    Par groskanel dans le forum Langage
    Réponses: 9
    Dernier message: 03/03/2011, 18h13
  2. Time 'getTime()' décalé d'une heure
    Par ThzChz dans le forum Général Java
    Réponses: 6
    Dernier message: 26/08/2010, 17h00
  3. [time.h] création d'une heure personnalisée
    Par crakocrako dans le forum C++
    Réponses: 1
    Dernier message: 27/05/2010, 15h20
  4. [Date] Une heure en trop
    Par muad'dib dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 08/08/2007, 09h20
  5. [Dates] Question sur les fonctions Date
    Par cerede2000 dans le forum Langage
    Réponses: 2
    Dernier message: 28/10/2006, 17h26

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